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-&gt;Session-&gt;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 - 会话超时的主要内容,如果未能解决你的问题,请参考以下文章

在 cakephp 中延长每个用户的会话超时

具有两个模型会话的 Cakephp 身份验证组件

CakePHP:会话、autoRegenerate、requestCountdown、AJAX 的问题

CakePHP多个会话

如何在cakephp 2中查看会话变量?

PHP cakephp有奇怪的会话问题