我担心自己无法解决这个问题。奇怪的是,这个问题似乎对我的安装来说是独一无二的。
在我的基于WordPress的网站上,用户登录时遇到问题,特别是在使用手机进行身份验证时:他们正在退出(即使在检查“记住我”时)也必须重新输入凭据(之后他们又退出了。从我的想法来看,很可能是他们各自的移动互联网服务提供商一直动态地为他们的设备分配新的IP地址,导致认证失败。
当我使用我的桌面登录时,一切都会正常工作。但是,比方说,我已经使用谷歌浏览器成功登录该网站,并且我打开了一个Mozilla Firefox(或任何其他浏览器)的实例同时登录,Chrome的用户“会话”将立即关闭(我知道因为异步脚本正在请求用户是否已登录,并在我使用其他浏览器登录后提示我登录)。因此,我认为整个WordPress身份验证也与用户代理有关。
虽然我非常感谢通过从其他IP或浏览器访问网站时自动取消正在运行的会话所提供的额外安全性,但我的用户却没有。即使对我自己来说也是非常麻烦,使用三台不同的机器加上平板电脑和手机从任何可能的地方访问该网站(最终我不再需要登录并等待回家)。
由于WordPress身份验证使用cookie,我研究了如何生成这些cookie。 wp_generate_auth_cookie()
方法使用用户名,散列密码的一部分,到期时间和salt(wp-config.php
中定义的常量salt),但它既不使用IP地址也不使用用户代理。
我在整个WordPress文件夹中搜索了“用户代理”或“IP地址”,但是没有包含这些术语的登录相关脚本(只有少数几个插件根本不影响用户会话)。
这让我很困惑。如果WordPress没有使用身份验证cookie存储该数据,他是如何意识到我使用其他浏览器/计算机登录的?检查发生在哪里,记录我和我的用户?
您对如何解决问题有任何进一步的想法吗?
非常感谢你!!
哈尔蒂
答案 0 :(得分:2)
Cookie由浏览器存储,同一台计算机上的不同浏览器不共享该存储。因此,当您使用Chrome登录时,WP会向Chrome发送一个登录Cookie,开始新的会话。当您随后使用Firefox访问该站点时,FF没有登录cookie,因此WP会提示您登录,然后向FF发送登录cookie,同时启动新会话。下次您使用Chrome访问该网站时,它会获取Chrome的登录Cookie,该Cookie与发送的与您的用户名相关的最后一个cookie不匹配,因此所有内容都会重新开始。
这并不能直接解释移动设备的问题;听起来有些原因他们没有正确存储饼干。