Проблема с перенаправлением SSO при создании нового предзаполненного топика по URL

Здравствуйте

Я реализую собственный сервис аутентификации в качестве провайдера единого входа (SSO) для Discourse. Всё работает нормально. Однако, когда мои пользователи (неавторизованные) открывают URL с предварительно заполненным темой, они не видят эти предварительно заполненные данные после возврата на Discourse.

Полный сценарий:

  • Неавторизованный пользователь открывает URL создания темы с предварительно заполненными данными
  • Он автоматически перенаправляется на страницу SSO
  • Он входит в систему через SSO и возвращается на http://discourse_site/session/sso_login?....
  • Здесь я ожидаю, что пользователь увидит форму создания темы с заполненными данными, но Discourse просто показывает страницу с последней темой. Форма создания темы даже не отображается

Может ли кто-нибудь помочь мне с этой проблемой? Есть ли проблема в моих настройках или это ошибка?

Также могу подтвердить, что если я нахожусь в конкретной теме и нажимаю «Войти», перенаправление работает корректно, и я возвращаюсь к этой теме.

Попробуйте использовать подход, описанный здесь: Creating pre-filled personal message links - #11.

Отлично, всё работает. Большое спасибо!

Старое сообщение:

Спасибо @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. Тогда это выглядело бы так:

http://discourse_site/session/sso_login?sso=payload&sig=sig&return_path=https%3A%2F%2Fdiscourse_site%2Fnew-message%3Fusername%3Dscossar%26title%3DInformation%2Brequested%2Babout%2Bgentle%2Byoga%2Bclasses

Но это не сработало. Тогда я начал тестировать это в разных местах, и ни один вариант не удался. Не могли бы вы подробнее объяснить, куда именно нужно вставлять return_path?

Вам нужно просто создать ссылку в формате, указанном в том сообщении. Вам потребуется подставить правильный URL вашего сайта Discourse и изменить имя пользователя с scossar на имя пользователя, существующее на вашем сайте. Не добавляйте параметры payload или sig в ссылку. Всё это должно быть обработано вашей существующей реализацией SSO. Параметр return_path просто перенаправляет пользователя на URL, который создаст предзаполненную тему.

Обратите внимание, что в примере, на который я ссылался, я создаю предзаполненное сообщение, а не предзаполненную тему. Вам нужно будет скорректировать return_path, указанный в примере кода, чтобы создавать тему вместо сообщения.