У меня есть сайт на WordPress, который выступает провайдером единого входа (SSO) для Discourse с использованием плагина WPDiscourse. Форум является публичным, но в нём есть некоторые закрытые группы.
Когда я хочу добавить кнопки, которые ведут пользователей с моего сайта на WordPress в закрытую группу на Discourse, я использую URL SSO, как указано здесь, чтобы пользователи не попадали на страницу «Ой! Страница не найдена или является закрытой».
Однако, когда пользователи уже прошли аутентификацию через SSO в Discourse и возвращаются, нажимая на те же кнопки, их снова перекидывает на страницу входа, даже если они отмечали галочку «Запомнить меня» при входе. В идеале они должны иметь возможность свободно переходить в закрытые группы после аутентификации через SSO в Discourse.
Есть ли лучший способ настроить это?
Я подумал о добавлении кода на страницу входа WordPress для проверки, авторизован ли пользователь уже в Discourse, и в случае успеха перенаправлять его на страницу, указанную в аргументе «return_path» в URL. Является ли это рабочим решением? Если да, какие функции или вызовы API можно использовать для этого?
Если пользователи уже вошли в ваш сайт WordPress, этого происходить не должно. Можете ли вы уточнить, входят ли в систему WordPress пользователи, с которыми это происходит? Если они вошли в систему, они должны быть автоматически перенаправлены на URL-адрес Discourse, который вы указали в аргументе return_path.
Спасибо, Саймон. Да, пользователь авторизован в WordPress.
Странность в моём случае заключается в том, что у меня есть основной сайт на WordPress (WPSite1), который выступает провайдером DiscourseConnect для Discourse с помощью плагина WP Discourse.
Затем у меня есть второй сайт на WordPress (WPSite2), который синхронизирует базу данных пользователей с WPSite1 с помощью плагина WP Remote User Synch.
Непонятно, почему это должно влиять на ожидаемое поведение, о котором вы упоминали, потому что когда я вхожу в систему на WPSite2, а затем перехожу на WPSite1, я уже авторизован и на WPSite1.
Однако происходит следующее: даже после входа в систему на WPSite1, который является провайдером DiscourseConnect, и при переходе по ссылке, например https://discourse.example.com/session/sso?return_path=/g/private_group, меня перекидывает на форму входа SSO в WordPress.
Сработал сценарий 2.
Я изучу инструкции, но, полагаю, всё настроено верно, так как вход через SSO работает. Проблема в том, что страница входа не распознаёт, что пользователь уже аутентифицирован.