你好,我通过 Discourse 使用 SSO 登录 WordPress。我使用了 Discourse WordPress 插件。
起初一切运行顺畅。
但当我在同一会话中(未退出登录)尝试访问链接 admin /wp-admin/ 时,系统并未将我重定向到仪表盘,而是在登录表单中显示以下错误:
Nonce 已过期
这可能是会话或 Cookie 出了问题。这会让用户感到困惑,因为我使用的是 Google 登录的 SSO。
你好,我通过 Discourse 使用 SSO 登录 WordPress。我使用了 Discourse WordPress 插件。
起初一切运行顺畅。
但当我在同一会话中(未退出登录)尝试访问链接 admin /wp-admin/ 时,系统并未将我重定向到仪表盘,而是在登录表单中显示以下错误:
Nonce 已过期
这可能是会话或 Cookie 出了问题。这会让用户感到困惑,因为我使用的是 Google 登录的 SSO。
我认为您遇到的问题是由服务器上的对象缓存引起的。请尝试将类似以下代码添加到您的 WordPress 主题的 functions.php 文件中,看看是否能解决问题:
add_filter('wpdc_sso_client_query', 'wpdc_custom_sso_client_query' );
function wpdc_custom_sso_client_query() {
return wp_generate_password( 12, false );
}
有关此问题的更多详细信息,请访问:Wordpress SSO Expired nonce - #15 by simon
使用此代码仍然失败。
Discourse 与 Cloudflare 不兼容,但我使用 Cloudflare 来保护我的网站。这有问题吗?
如果删除 Cookie 并重新登录,问题会解决,但这令人困惑。
它在此链接处停止:
/wp-login.php?discourse_sso_error=expired_nonce
我发现的有趣测试表明,并非您插件中的所有链接都失效了。
这个链接正常工作:
/?discourse_sso=7cygqwtc8aaz&redirect_to=https%3A%2F%2Fmyweb.net%2Fmy-account
这意味着您的 SSO 参数中的 “7” 是正确的
我尝试将我的链接重定向到该参数以重定向用户。
您可以通过链接参数检查并解决此问题。
此链接在文本“外部登录文本”上工作正常。

你最终找到解决方案了吗?我也遇到了同样的问题。
请尝试使用此处提供的解决方案:Wordpress SSO Expired nonce - #15 by simon
谢谢,我已应用该修复,但问题仍然存在。
@Golaxo 您是否也在使用 Cloudflare?
如果是,请尝试完全禁用 Cloudflare,并检查问题是否仍然存在。
谢了,兄弟!我骂了一通之后终于找到问题了:是 Paid Membership Pro 插件引起的冲突。我还需要研究一下如何在 WordPress 中针对来自 Discourse SSO 的用户限制内容,但至少我现在知道问题出在哪里了 ![]()