Я реализую собственный сервис аутентификации в качестве провайдера единого входа (SSO) для Discourse. Всё работает нормально. Однако, когда мои пользователи (неавторизованные) открывают URL с предварительно заполненным темой, они не видят эти предварительно заполненные данные после возврата на Discourse.
Полный сценарий:
Неавторизованный пользователь открывает URL создания темы с предварительно заполненными данными
Он автоматически перенаправляется на страницу SSO
Он входит в систему через SSO и возвращается на http://discourse_site/session/sso_login?....
Здесь я ожидаю, что пользователь увидит форму создания темы с заполненными данными, но Discourse просто показывает страницу с последней темой. Форма создания темы даже не отображается
Может ли кто-нибудь помочь мне с этой проблемой? Есть ли проблема в моих настройках или это ошибка?
Также могу подтвердить, что если я нахожусь в конкретной теме и нажимаю «Войти», перенаправление работает корректно, и я возвращаюсь к этой теме.
Спасибо @simon за ответ. К сожалению, мне не удалось заставить это работать. В вашей ссылке говорилось использовать URL вроде
http://localhost:3000/session/sso?return_path=http%3A%2F%2Flocalhost%3A3000%2Fnew-message%3Fusername%3Dscossar%26title%3DInformation+requested+about+gentle+yoga+classes
Сначала я предположил, что нужно добавить его на этап 6 официальной документации Discourse SSO. Тогда это выглядело бы так:
Но это не сработало. Тогда я начал тестировать это в разных местах, и ни один вариант не удался. Не могли бы вы подробнее объяснить, куда именно нужно вставлять return_path?
Вам нужно просто создать ссылку в формате, указанном в том сообщении. Вам потребуется подставить правильный URL вашего сайта Discourse и изменить имя пользователя с scossar на имя пользователя, существующее на вашем сайте. Не добавляйте параметры payload или sig в ссылку. Всё это должно быть обработано вашей существующей реализацией SSO. Параметр return_path просто перенаправляет пользователя на URL, который создаст предзаполненную тему.
Обратите внимание, что в примере, на который я ссылался, я создаю предзаполненное сообщение, а не предзаполненную тему. Вам нужно будет скорректировать return_path, указанный в примере кода, чтобы создавать тему вместо сообщения.