CakePHP - 会话超时
Posted
技术标签:
【中文标题】CakePHP - 会话超时【英文标题】:CakePHP - session timeout 【发布时间】:2013-12-19 07:50:02 【问题描述】:我在 core.php 中使用 30 分钟后注销:
Configure::write('Session', array(
'defaults' => 'php',
'timeout' => 30, // auto logout after 30 minutes
'cookieTimeout' => 1440, // session cookie 24 hours
'autoRegenerate' => true // regenerate session
));
这很好。我会显示会话超时的倒计时消息,例如在注销按钮旁边的页面标题中。有人可以帮帮我吗?
例如在 default.ctp 中。
<body>
<div id="container">
<div id="header">
<div style="float: right;">
<?php
// display countdown of session timeout:
// You will be automatically logged off for (time to expire cookie timeout)
// Logout button
echo $this->html->link(__('Logout'), array('controller' => 'users', 'action' => 'logout'), array('escape' => false));
?>
</div>
</div>
<div id="content">
</div>
</div>
【问题讨论】:
到目前为止你尝试过什么?找到“倒计时”javascript 应该很容易,因此只需使用正确的值对其进行初始化…… 您应该始终提及您正在使用的确切 cakephp 版本。 【参考方案1】:由于人们对你很苛刻,而且这是你第一次来这里,所以我会稍微温和一点。我不给你答案,但关键点:
您可以阅读$this->Session->read('Config.time')
以获取会话结束时间的 unix 时间戳。
moment.js
等一些 javascript 库在处理时间、倒计时等方面非常出色。请查看 fromNow
- 您也可以在未来使用它。
希望这会有所帮助;)
【讨论】:
【参考方案2】:你可以这样写
配置::write('Session.timeout', '120');
配置::write('Security.level', 'medium');
如果 'high' 则 'Session.timeout' x 10 中的会话超时,
如果 'medium' 则 'Session.timeout' x 100 中的会话超时,
如果 'Session.timeout' x 300 中的“低”会话超时
【讨论】:
【参考方案3】:这也可能是 php 设置的问题。
这里有一个 SO 答案,详细说明了如何解决这个问题:
https://***.com/a/3585057/1291499
【讨论】:
你不懂我。我想在网站上显示消息,例如:您将被自动注销(cookie 过期时间)。以上是关于CakePHP - 会话超时的主要内容,如果未能解决你的问题,请参考以下文章