WordPress DiscourseConnectクライアント - nonceの有効期限切れ

問題はWordPressのオブジェクトキャッシュにあるのではなく、私の知る限りではリクエスト間で永続化されません。問題は、永続的なキャッシュを持つサイトで発生します:https://developer.wordpress.org/reference/classes/wp_object_cache/#persistent-caching。これはプラグインで設定できますが、一部のホスティングプロバイダー(例:WP Engine)によってデフォルトで有効にもなっています。WP Engineの場合、ログインページではオブジェクトキャッシュを有効にしませんが、それ以外のすべてのページでは匿名ユーザーに対して有効にします。したがって、WP Engineでは、「Discourseでログイン」リンクがログインページ以外のページに追加された場合にのみ問題が発生します。

discourse_sso_urlの問題は、永続キャッシュが有効になっているサイトでは、常に同じ値に設定されていると、常に同じノンス(nonce)が返されることです。そのdiscourse_sso値をデフォルト値の1ではなくランダムな文字列に設定すると、キャッシュが壊れます。少なくとも、以前テストしたときは常にそのように機能していました。現時点ではテストできる環境がありません。

編集:問題に関する詳細はこちらにあります:https://meta.discourse.org/t/discourse-as-provider-wp-sso-nonce-error/117113/14。これを調べたのはかなり前のことです。当時の問題の修正は、`discourse_sso_url`にランダムな文字列を追加することと、ログインリンクが表示されるページでページキャッシュが有効になっていないことを確認すること(そうしないと、匿名ユーザーが訪問するたびにランダム文字列が一意にならない)の両方を行うことのようでした。