WordPress の「全端末からログアウト」機能では Discourse からはログアウトされない

WordPress は WP-Discourse プラグインを介して SSO プロバイダーとして設定されていますが、特定の極端なケースでは、グループ割り当てなどの整合性を確保するためにユーザーをログアウトさせる必要があります。

ユーザーが何を言っているのか理解できない場合、WordPress 管理画面からセッションをログアウトさせる対応を取ります。ただし、これでは Discourse 側からはログアウトされません。

何か関数などを使って、WordPress から Discourse のログアウト信号を連携させ、これを可能にする方法はありますか?

WordPress 管理画面でユーザーをログアウトさせた際に呼び出される WordPress アクションをご存じでしょうか?WP Discourse プラグインは、WordPress と Discourse 間でユーザーが開始したログアウトを同期するために、clear_auth_cookie アクションにフックしています。サイト管理者がユーザーをログアウトさせた場合にも機能する、別のアクションがあるかもしれません。

少し調べてから、改めてご連絡します。

おそらく、wp_ajax_destroy_sessions 関数を使用し、$sessions->destroy_all(); でセッショントークンの特殊な処理を行っているのでしょう。この関数で clear_auth_cookie をフックするにはどうすればよいですか?

「いいね!」 1

私もその関数が使われていると思います。

WordPress のコードをざっと確認しましたが、これを実現する明確な方法は見つかりませんでした。もしこの操作を頻繁に行うものでないなら、Discourse の管理者はユーザーの管理ページの上部に表示されている「ログアウト」ボタンをクリックすることで、Discourse 側からユーザーをログアウトさせることができます。SSO 経由での再ログインを強制するには、まず手動でユーザーを Discourse からログアウトさせ、その後 WordPress からもログアウトさせるとよいでしょう。

「いいね!」 3

試してみます。もしこの戦略が失敗したら、数ヶ月後にこのトピックを再び持ち上げるかもしれません。

「いいね!」 2