Setup DiscourseConnect - Official Single-Sign-On for Discourse (sso)

Я думаю, что ваш главный вопрос касается поля external_id. Вам необходимо установить поле external_id в полезной нагрузке DiscourseConnect. Значение этого поля должно быть некоторой строкой, связанной с пользователем, которая никогда не изменится. Я предполагаю, что в вашем приложении есть таблица пользователей. В качестве значения поля external_id хорошо использовать первичный ключ записи пользователя в этой таблице.

Если пользователь создал учетную запись в Discourse до того, как вы добавили аутентификацию DiscourseConnect с вашего веб-сайта, то при первом входе в Discourse через DiscourseConnect система попытается найти пользователя по адресу электронной почты, указанному в полезной нагрузке DiscourseConnect. После нахождения пользователя в базу данных Discourse будет добавлена запись, содержащая external_id из полезной нагрузки DiscourseConnect. При следующем входе пользователя система будет находить его по external_id, а не по адресу электронной почты. (Обратите внимание, что это не работает, если вы установите параметр require_activation в полезной нагрузке DiscourseConnect в значение true.)

В Discourse предусмотрены надежные механизмы отката для большинства крайних случаев. Существуют проблемы, связанные с наличием у пользователей нескольких учетных записей и адресов электронной почты, которые могут вызывать ошибки. Некоторые подробности о том, как справляться с такими случаями, можно найти здесь: Отладка и исправление распространенных проблем DiscourseConnect.

1 лайк