# ユーザーセッションから完全にログアウトし、oauthデータをクリアする方法

**URL:** https://meta.discourse.org/t/how-to-fully-logout-user-session-plus-clear-oauth-data/262394
**Category:** SSO
**Tags:** oauth2
**Created:** [2023 年 4 月 20 日午後 1:08 UTC](https://meta.discourse.org/t/how-to-fully-logout-user-session-plus-clear-oauth-data/262394 "2023-04-20T13:08:21Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![robertkibet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/robertkibet/32/290055_2.png) [@robertkibet](https://meta.discourse.org/u/robertkibet)
#### Post date: [2023 年 4 月 20 日午後 1:08 UTC](https://meta.discourse.org/t/how-to-fully-logout-user-session-plus-clear-oauth-data/262394/1 "2023-04-20T13:08:21Z")

</div>

ログアウトロジックで課題が発生しています。

Auth0設定とDiscourse OAuth2を使用しています。問題は、`currentUser.destroySession()` を使用してログアウトをトリガーすると、ユーザーはログアウトされるためDiscourseセッションは終了しますが、OAuthデータが何らかの形でキャッシュされていることです。

ここで何を意味するかというと？

**コンテキスト:** SSOを使用している場合、ユーザーがサイトからログアウトすると、次にログインしようとしたときに、サイトからSSOページにリダイレクトされ、そこで資格情報を入力できるようになり、認証されると、アクティブなセッションでサイトに戻されることが期待されます。

上記のコンテキストを使用すると、Discourseはユーザーを完全にログアウトしていないようです。そのため、Discourseからログアウトしても問題なく機能しますが、フォーラムサイトに再度ログインしようとすると、DiscourseはSSOページを再度トリガーせず、以前にログインしたSSOアカウントを何らかの方法で記憶しており、自動的にユーザーを選択してログインします。これは非常に奇妙です。

これは基本的に、そのユーザーから抜け出せないことを意味します。インコグニトまたは完全に異なるブラウザを使用しない限り、別のユーザーアカウントに変更することはできません。

**期待:** ログアウトをクリックすると、次にログインしようとしたときに、Auth0 SSOページに移動し、必要な操作を実行した後、Discourseフォーラムにリダイレクトされるはずです。

`currentUser.destroySession()` のセッションとOAuthデータのクリア方法に問題があるようです。

手動でAPI呼び出しを行ってユーザーセッションを破棄することもテストしましたが、結果は同じで改善はありませんでした。

```php
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を使用する際のログアウトの修正/アプローチ方法について、アイデアがあれば共有してください。
