为了Ajax的原因,我需要将Security.level设置在medium上。 但我希望如果用户关闭浏览器,他的会话将会破坏。 我怎么能这样做?
提前致谢!
答案 0 :(得分:6)
配置/ core.php中
Configure::write('Session', array(
'defaults' => 'php',
'cookieTimeout' => 0, //Lives until the browser is closed.
'checkAgent' => false //To fix a little the Chrome Frame problem
));
答案 1 :(得分:4)
除非您持久保存会话数据(即:将会话数据存储在将来有过期日期的cookie中),否则当用户关闭浏览器时应该销毁该会话。
不幸的是我不熟悉CakePHP框架,因此我无法对其API进行评论。但是,如果要显式结束会话,可以使用session_destroy()
在PHP中执行此操作。
希望有所帮助。
答案 2 :(得分:1)
当页面关闭时,您可以使用JS删除会话cookie(请记住:当用户刚刚离开时,也会触发页面关闭 - 可能只是到您的下一页)。
答案 3 :(得分:0)
我猜你可以在页面卸载时触发ajax命令来调用session_destroy()
答案 4 :(得分:0)
http://book.cakephp.org/view/1317/destroy - 但是,是的,CakePHP设置了一个正确的会话cookie,当浏览器关闭时会被浏览器删除。
你真正关心的是会话劫持 - 所以你真的想要在网站关闭时注销某种东西。你不能这样做 - 我所知道的最好的替代方法是:
Configure::write('Session.timeout', $seconds);
可以独立于安全级别控制超时,其中对于中等安全级别,超时秒数乘以100.银行使用此方法。