【问题标题】:CakePHP Session Expires Even When Browser is Active即使浏览器处于活动状态,CakePHP 会话也会过期
【发布时间】:2010-07-21 15:08:46
【问题描述】:

我正在开发一个电子商务项目,使用 Auth 组件进行身份验证,使用 Sessions 组件存储我的购物车。

问题是会话在一段时间后突然被清除,即使我正在积极浏览该网站。我知道这应该是因为会话超时,但只是增加超时值不是我正在寻找的解决方案。

我希望会话仅在用户关闭浏览器时过期。这可以实现吗?

【问题讨论】:

  • 哦...即使我正在积极地点击我的购物车,我的会话也刚刚被清除。我的代码有什么问题吗?

标签: session cakephp timeout


【解决方案1】:

AFAIK 你所能做的就是将会话超时变量设置到很远的将来。关闭浏览器时会自动清除会话(除非您设置了记住我类型的 cookie)。将其设置在遥远的未来将有效地完成您需要做的事情。

您的会话会超时多长时间?只有当您的用户在一段时间内处于非活动状态时,它才会超时。如果它在请求之间超时,并且您知道超时时间还没有过去,那么您还有其他一些问题正在发生。您的 core.php 文件中关于您的安全级别和会话超时的设置是什么?

【讨论】:

  • 您好,感谢您的回复。我已将 Security.level 设置为高,Session.timeout 设置为 120 秒。根据您的建议,我可以将超时设置为更高的值,但在这种情况下,即使我可以关闭浏览器并稍后再回来,会话也会保持活动状态。无论如何,我想没有办法确定浏览器是否在客户端关闭。
  • 将安全级别设置为高除了增加会话超时 IIRC 之外还有其他含义。它在 med|high 时添加了引用检查。当设置为高时,它会在 每个 请求之间重新生成会话 ID。我建议你把它调成中等。然后,当您关闭浏览器时(整个浏览器必须退出,而不仅仅是那个选项卡......检查您的任务管理器以确保它已经消失)它将关闭会话。是的,您无法确定浏览器是否已关闭客户端。
  • 好的,谢谢...我已将其更改为中等,到目前为止一切正常! :)
  • 我会为你祈祷!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 1970-01-01
相关资源
最近更新 更多