【发布时间】:2010-10-28 15:48:15
【问题描述】:
出于 Ajax 的原因,我需要将 Security.level 设置为中等。 但我希望如果用户关闭浏览器,他的会话将被破坏。 我该怎么做?
提前致谢!
【问题讨论】:
-
你不要说你是用php cake还是数据库会话。
出于 Ajax 的原因,我需要将 Security.level 设置为中等。 但我希望如果用户关闭浏览器,他的会话将被破坏。 我该怎么做?
提前致谢!
【问题讨论】:
配置/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
));
【讨论】:
除非您要持久化会话数据(即:将会话数据存储在具有未来到期日期的 cookie 中),否则应在用户关闭浏览器时销毁会话。
很遗憾,我不熟悉 CakePHP 框架,因此无法评论它的 API。但是,如果您想显式结束会话,可以在 PHP 中使用session_destroy() 来完成。
希望对您有所帮助。
【讨论】:
当页面关闭时,您可以使用 JS 删除会话 cookie(请记住:当用户刚刚离开时也会触发页面关闭 - 可能只是到您的下一页)。
【讨论】:
我猜你可以在页面卸载时触发 ajax 命令来调用 session_destroy()
【讨论】:
http://book.cakephp.org/view/1317/destroy 用于 CakePHP - 但是,CakePHP 确实设置了一个适当的会话 cookie,该会话 cookie 在浏览器关闭时被删除。
您真正关心的可能是会话劫持 - 因此您确实希望在站点关闭时进行某种注销。你不能这样做 - 我所知道的最好的替代方法是:
Configure::write('Session.timeout', $seconds); 独立于安全级别控制超时,对于中等安全级别,超时秒数乘以 100。银行使用此方法。【讨论】: