在使用WordPress进行建站的过程中,经常会遇到各类问题。比如搬主题之前就遇到过,网站前台页面登陆正常,然后过了一段时间(一般是1天以后)后再点击登陆,输入用户名和密码后显示无法登陆/认证失败/验证失败之类的问题。但是只要清空WordPress配套的插件缓存,问题就解决了,这到底是什么原因导致的。这里搬主题就分享一下WordPress隔一段时间无法登陆/验证失败的解决方案。
一、问题分析
因为搬主题用的是QUX主题,在前台顶部会存在一个登陆口,网站普通用户都可以通过这个入口进行注册或登陆。但是问题是一般会隔1或者2天后,这些用户再次想要登陆的时候,系统会显示认证失败,也就是无法登陆。刷新网页也没任何作用,这个时候只要登陆WordPress的管理后台,清空WordPress缓存插件的缓存,问题就解决了。
其实这样就意味着问题出在缓存上面。但是总不可能把缓存插件关了吧。
搬主题针对这个问题在网上进行了大量的查找,最终发现是WordPress自带的Nonces问题。
二、WordPress中的Nonce是什么
“ Nonces”一词源自短语“一次使用的数字”,尽管这并不是描述它们的完全准确的方法。随机数不是真正的数字,也不是只使用一次。它们实际上是由数字和字母组成的哈希,并且可以在有限的生命周期内多次使用。
Nonces使某些WordPress活动更加安全。将为特定用户生成一个随机数,并且仅允许该用户访问。随机数到期后,任何人都无法使用它。Nonces可以应用于各种事物,例如表单提交和帖子预览。
Nonces是WordPress中的安全性令牌。它们被写入到HTML源代码中。 在缓存的页面上,随机数可以在后台过期,而其ID仍存在于页面的HTML源代码中。如果发生这种情况,则HTML源引用了一个无效的随机数,并且事情中断了。
这可能会影响各种功能,从表单验证到后期网格的视觉外观,等等。在极少数情况下,它甚至可能导致前端的页面完全空白。
官方的解释翻译得有点懵懵懂懂的,这里搬主题就简单说一下,WordPress程序为了安全设置了一个Nonces代码,也就是自动生成随机数,每12小时就会失效生成新的随机数。如果你缓存了该页面,则经过了12小时后,再次访问该页面,已失效的随机数和后台的令牌对应不上,那么自动就验证失败,登陆失败了。
三、解决方案
既然知道原因了,那就很好解决了。这里需要各位设置好自己的WordPress的缓存插件。
1、WP Rocket缓存插件
如果是WP Rocket缓存插件的话,那么就需要到面板上找到 缓存-缓存有效期 ,设置为10小时或者更短。
2、LiteSpeed Cache插件
如果是像搬主题这样用LiteSpeed Cache插件的话,则到插件面板上开启ESI功能
以上是基于LiteSpeed环境的,但是如果是OpenLiteSpeed环境的话,是不支持ESI功能的,那又怎么办呢?
设置默认公开缓存的TTL为43200,也就是12个小时。然后保存即可。
3、其他插件
其他插件搬主题就不一一列举了,如果其他插件没有这么细化的选项,那只能设置多久时间自动清理缓存去解决登陆异常的问题了。
文章评论