WordPress登录/注册Invalid Nonce Error验证失败问题解决图文教程
不知道大家有没有遇到这样一种情况,明明在登录的时候用户名和密码都是正确的,并且验证码也正确的时候,死活登录不了…
不知道大家有没有遇到这样一种情况,明明在登录的时候用户名和密码都是正确的,并且验证码也正确的时候,死活登录不了。直接提示安全验证失败,请联系管理员等类似的提示。搬主题之前也遇到过类似的情况,找了很多方法,一直没有很好的解决。后来终于在网上找到类似的解决方案,验证了一段时间后没有出现报错,分享给大家WordPress登录/注册Invalid Nonce Error验证失败问题解决图文教程。
问题重现
可能搬主题的这个问题不具有普遍性,但是真遇到了反而很难找到相应的解决办法。这里搬主题就说一下目前存在的问题:
点击会员登陆框,输入用户名、密码、验证码后,提示:安全验证失败,请联系管理员。总之是无论怎么变换验证码,提示一直报错。如果出现不能登录的情况,只能直接在WordPress后台,设置LiteSpeed Cache缓存插件所有缓存内容全部清空,然后前台的会员才能登录了,但过几天后问题继续出现。
接下来搬主题再说一下目前的环境及设置细节。
- 使用的是OpenLiteSpeed系统,安装了LiteSpeed Cache缓存插件。
- 启用了对象缓存及Opcache操作码缓存进行优化。
- 网站使用会员前端登录方式,直接在任何页面顶部登陆栏登陆。
- 网站修改了默认的WordPress登陆地址。
- 网站使用了伪静态。
- 网站使用CDN,且设置了不缓存PHP、html文件,开启动态加速。
问题解析
之前搬主题一直在寻找问题的答案,到底是哪方面问题导致的呢?出现安全验证失败的原因一般是本地打开浏览器后,输入账号的认证凭证和远程主机商的认证凭证不一致,或者不通过,所以要解决这个验证失败的问题。
以缓存为准,包括对象缓存及普通缓存等,搬主题曾经尝试过,出现验证失败的情况,直接清空对象缓存后,仍然不能登录,这个时候搬主题也不明白为什么,但是知道问题应该和对象缓存无关。
session会话缓存问题?也不对,因为搬主题的session会话是缓存在LSMCD里的,也就是缓存在对象缓存里,理论上也不会出现该问题。
cookie问题?刚开始我确实也在考虑该问题,是不是cookie过期验证不通过之类的,但是鉴于搬主题对这方面的知识了解来说,不确定是不是cookie导致的问题并如何解决。
问题解决
其实最终判断为缓存Nonce的问题导致,也就是常说的Nonce随机数验证的问题。大概的原理可以认为用户A在站点登录后,生成了随机数Nonce,然后用户A可以登录相应的用户中心页面。但是过段时间Nonce随机数过期了,但是用户中心页面被缓存了,同时相应的Nonce随机数也被缓存了,导致在Nonce随机数对比验证的时候出现错误,最后没办法安全通过验证。
无效的Nonce是什么意思
WordPress插件只有在发现一个过期的nonce并且由于这个旧的数据而无法验证安全令牌时才会显示这个错误。这只是插件安全功能的一部分,但是如果你在你的WordPress网站上安装了任何缓存插件,这个插件可能与缓存插件的缓存机制发生冲突。这个问题在WP Super Cache或Wordfence WordPress插件中比较常见。
很多人建议将登录/注册页面从缓存中排除,这本身就可以解决问题,可能你也试过,但没有得到解决,不是因为方法不对,而是因为应用不对。
解决办法就是不要缓存Nonce随机数即可。但是这里又有个难点,因为毕竟WordPress网站要进行缓存,如果直接设置WordPress不缓存所有文件,那问题肯定能解决,但是网站没有缓存会很慢。我们要做的是既要缓存WordPress,又要有针对性的排除相应的Nonce随机数页面。
接下来需要将如下的页面排除在缓存外。
WordPress默认登陆页面---排除是为了避免任何页面上的缓存问题 WordPress默认注册页面---排除是为了避免任何页面上的缓存问题 WordPress自定义登陆页面---排除是为了避免任何页面上的缓存问题 WordPress自定义注册页面---排除是为了避免任何页面上的缓存问题 网站会员页面---排除是为了避免该页面缓存了Nonce随机数导致无法验证登陆的问题。 网站会员仪表板页面---排除是为了避免该页面缓存了Nonce随机数导致无法验证登陆的问题。 验证码字符串---排除是为了避免验证码被缓存的问题。
以LiteSpeed Cache缓存插件设置为例
保存后,问题解决。
接下来搬主题再分享一下类似问题的解决办法的文章,比如通过 Ultimate Member 插件导致的 Invalid Nonce 的问题。
登录到你的WordPress网站,并尝试排除这些页面
- 登录页面 – 这是你的登录页面
- 注册页 – 这是会员在你的网站上用于注册的页面。
- 会员页 – 这个页面也应该排除在缓存之外,这个页面只是收集用户的数据。这些数据用于在服务器和用户的网络浏览器之间建立安全连接。
- 仪表板页面 – 这个页面必须从缓存中排除。大多数用户因为没有把这个页面从缓存中排除而犯错。仪表板页面可以是你网站上的一个页面,用户在成功登录或注册后会被自动重定向。
A. 复制以下代码/字符串
wp-.*.php
index.php
login/
register/
member/
dashboard/
注意:仪表板页面是你网站上的一个页面,用户在成功登录或注册后会自动转到该页面。如果你不确定你的网站上的仪表板页面,那么请按照以下步骤进行操作
- 登录到wp-admin面板 在菜单列表中找到 “Ultimate Member”插件并点击它。
2、进入 “设置”,仔细检查这些页面。
3、现在回来,点击 “用户角色”。“
4. 点击 “编辑 “任何用户角色,比方说,订阅者
5. 在这里设置你的 “仪表板 “页面
B. 粘贴字符串
现在,如果你已经复制了上述字符串/代码,再次提及以供参考,只需将其粘贴在所需的地方 –
wp-.*.php
index.php
login/
register/
member/
dashboard/
如果你不知道如何或在哪里放置上述代码? 请按照以下步骤操作 —
1.登录到wp-admin面板。你会看到在侧边栏这里有一个设置选项。
2. 选择 “WP Super Cache “选项
3. 点击 “高级”
4. 在这里添加给定的 “字符串”,然后 “保存”它。
5. 现在删除缓存和过期的nonce,以允许新的变化发生。
最终总结
这样,你就可以解决你网站上的 “无效Nonce”相关问题。以上就是WordPress登录/注册Invalid Nonce Error验证失败问题解决图文教程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!