Итак, у меня возникла проблема с логикой выхода из системы.
Мы используем конфигурацию Auth0 с OAuth2 для Discourse, и проблема заключается в следующем: когда я инициирую выход, вызывая currentUser.destroySession(), сессия в Discourse завершается, так как пользователь выходит из системы, но данные OAuth каким-то образом всё ещё кэшируются?
Что я имею в виду?
Контекст: при использовании SSO вы ожидаете, что когда пользователь выйдет с вашего сайта, при следующей попытке входа он будет перенаправлен с вашего сайта на страницу SSO, где сможет ввести свои учетные данные. После аутентификации пользователь будет перенаправлен обратно на ваш сайт с активной сессией.
Исходя из этого контекста, похоже, что Discourse не выполняет полный выход пользователя. Поэтому, хотя выход из Discourse работает нормально, при повторной попытке входа на сайт форума Discourse снова не перенаправляет на страницу SSO. Каким-то образом он всё ещё помнит ранее использованный аккаунт SSO, автоматически выбирает его и выполняет вход пользователя, что очень странно.
Это в основном означает, что я застрял с этим пользователем. Я не могу переключиться на другую учетную запись, если только не воспользуюсь режимом инкогнито или совершенно другим браузером ![]()
Ожидание: после нажатия кнопки «Выйти» при следующей попытке входа меня должно перенаправлять на страницу Auth0 SSO, где я смогу выполнить необходимые действия, а затем меня перенаправят обратно на форум Discourse.
Похоже, проблема в том, как currentUser.destroySession() очищает сессию и данные OAuth?
Я также протестировал ситуацию, выполнив вручную API-вызов для уничтожения сессии пользователя, но результат тот же, улучшений нет:
fetch(`https://MY_FORUM.discourse.group/admin/users/USER_ID/log_out`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Api-Key': 'API_KEY',
'Api-Username': 'ADMIN_USERNAME',
},
})
Пожалуйста, поделитесь своими соображениями, если у вас есть идея, как исправить или подойти к решению проблемы выхода из системы при использовании OAuth.