# WordPress DiscourseConnect 客户端 - 过期 nonce

**URL:** https://meta.discourse.org/t/wordpress-discourseconnect-client-expired-nonce/285374
**Category:** WordPress
**Created:** [2023年十一月13日 19:09 UTC](https://meta.discourse.org/t/wordpress-discourseconnect-client-expired-nonce/285374 "2023-11-13T19:09:59Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [2023年十一月13日 21:39 UTC](https://meta.discourse.org/t/wordpress-discourseconnect-client-expired-nonce/285374/2 "2023-11-13T21:39:49Z")

</div>

我猜想这发生在通过 Discourse 站点登录 WordPress 时。如果是这种情况，问题在于 WordPress 生成的 nonce 已过期。这在启用了对象缓存的 WordPress 网站上会发生。

一种解决方案是在所有包含“使用 Discourse 登录”链接的页面上禁用对象缓存。对于这种方法，请确保为匿名用户禁用对象缓存。

另一个解决方案在此处概述：[Wordpress SSO Expired nonce - #15 by simon](https://meta.discourse.org/t/wordpress-sso-expired-nonce/105159/15?u=simon%E3%80%82%E8%AF%A5%E5%B8%96%E5%AD%90%E4%B8%AD%E7%9A%84%E5%87%BD%E6%95%B0%E5%8F%AF%E4%BB%A5%E5%AE%8C%E5%85%A8%E6%8C%89%E5%8E%9F%E6%A0%B7%E5%A4%8D%E5%88%B6%E5%88%B0%E6%82%A8%E7%9A%84) WordPress 主题的 `functions.php` 文件中。

该函数会将一个随机字符串添加到“使用 Discourse 登录”URL。该随机字符串会触发 WordPress 破坏缓存并为用户生成一个新的 nonce。@angus，这可能应该添加到插件的代码中：[wp-discourse/lib/sso-client/sso-client-base.php at main · discourse/wp-discourse · GitHub](https://github.com/discourse/wp-discourse/blob/main/lib/sso-client/sso-client-base.php#L77%E3%80%82%E8%BF%99%E6%A0%B7%E5%81%9A%E6%B2%A1%E6%9C%89%E4%BB%BB%E4%BD%95%E5%9D%8F%E5%A4%84%EF%BC%8C%E8%80%8C%E4%B8%94%E6%88%91%E8%AE%A4%E4%B8%BA%E6%B2%A1%E6%9C%89%E5%85%B6%E4%BB%96%E6%96%B9%E6%B3%95%E5%8F%AF%E4%BB%A5%E5%A4%84%E7%90%86%E5%AF%B9%E8%B1%A1%E7%BC%93%E5%AD%98%E5%AF%BC%E8%87%B4%E4%BD%BF%E7%94%A8%E8%BF%87%E6%97%B6%E7%9A%84) nonce 而不是为每次访问生成新 nonce 的问题。

---

_[View the full topic](https://meta.discourse.org/t/wordpress-discourseconnect-client-expired-nonce/285374)._
