【问题标题】:Chrome Toggle different devices view destroys the sessionChrome 切换不同的设备视图会破坏会话
【发布时间】:2018-01-13 22:04:26
【问题描述】:

我正在使用 PHP 作为后端技术的网站管理员 cp,同时我正在修复一些响应问题。

所以我登录到管理面板但是当我切换不同的设备(例如 Galaxy、Nexus Iphone 甚至响应模式以测试我所做的响应式外观或修复时,我发现自己已注销并重定向到登录页面和我还看到了登录前不应该出现的东西,例如管理菜单,但它无法访问,换句话说,它一半登录,一半没有。

兑现未被禁用。

会话 id 与我看到的相同。

我真的想不通!

这在浏览器中是否正常,这意味着每个设备都独立于整个浏览器?

还是我做错了什么?

【问题讨论】:

  • 检查打开控制台时,禁用缓存没有勾选
  • @JoaquinPeraza no cahsing 未被禁用!
  • 如何检查登录状态?
  • @Akintunde 通过会话
  • 我们需要有关您的登录脚本的更多信息。有很多可能性。也许您也有一个 cookie,或者您的登录脚本不允许另一个具有此会话 ID 的浏览器/设备,但没有正确地破坏您的会话...

标签: php google-chrome


【解决方案1】:

最后,在审查我的代码和调试每一件事之后,我想出了一个解决问题的方法:

  • 我在设备是独立的问题中的假设 彼此之间是完全正确的,因为每个设备都有不同的 HTTP_USER_AGENT

你可以这样试试:

echo $_SERVER['HTTP_USER_AGENT'];

在浏览器上切换不同的设备并查看结果。

因此,对于基于堆栈溢出和许多其他资源的会话最佳实践,最好将$_SERVER['HTTP_USER_AGENT'] 保存在会话中,然后在登录后检查会话,这意味着登录用户正是来自的用户那个浏览器

这就是我正在做的事情,我正在检查用户登录会话和用户代理会话

这就是导致问题的原因,所以当我切换不同的设备时,HTTP_USER_AGENT 会发生变化,因此会话不匹配,因此我会自动注销。

【讨论】:

  • 我刚刚看到这个问题,并想说很清楚你在做用户代理验证$this->session->set('agent', $this->custom->userAgent()); 和 chromes 设备视图将其更改为你设置为的设备的用户代理......
猜你喜欢
  • 1970-01-01
  • 2015-07-02
  • 2013-11-10
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多