CakePHP - 会话超时

11

我在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应该很容易,所以只需要用正确的值初始化它即可... - CBroe
你应该始终提及你正在使用的确切的CakePHP版本。 - mark
3个回答

11

既然你是第一次来这里,人们对你很苛刻,我会对你稍微温柔一些。我不会提供答案,但是给出以下几点建议:

  • 您可以读取$this->Session->read('Config.time')以获取会话何时结束的UNIX时间戳。
  • 一些JavaScript库,如moment.js,在处理时间、倒计时等方面非常出色。检查fromNow-您还可以将其用于未来。

希望这有所帮助 ;)


0

你可以这样编写:

Configure::write('Session.timeout', '120');

Configure::write('Security.level', 'medium');

如果设置为'high',则会话超时时间为'Session.timeout' x 10,

如果设置为'medium',则会话超时时间为'Session.timeout' x 100,

如果设置为'low',则会话超时时间为'Session.timeout' x 300。


-2

你不理解我的意思。我想在网站上显示一条消息,例如:“您将在(cookie超时时间)后自动注销登录。” - user3027356

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接