Yii2中的会话超时

时间:2017-01-19 13:42:47

标签: php session yii2

我使用内置的yii2函数来设置会话。由于某些要求,我无法使用内置的yii2登录。

所以我在下面设置了会话:

  

Yii :: $ app-> session-> set('unique_code','xxxx');

和我的config / main.php文件

'session' => [
        // this is the name of the session cookie used for login on the frontend
        'name' => 'project-frontend',
        'timeout' => 60*60*24*30,
    ],

但是一段时间后用户仍然会从网站注销。

那么在这种情况下如何增加会话超时?

2 个答案:

答案 0 :(得分:5)

我会建议你,如果你想要销毁特定的会话,那么设置两个会话:

Yii::$app->session->set('unique_code', 'xxxx');
Yii::$app->session->set('code_time', 'xxxx');

使用code_time检查当前时间,一旦两次会话都未设置。

如果您希望用户在一定时间后使用当前解决方案注销:

'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => false,
        'authTimeout' => 3600, // auth expire 
    ],'session' => [
        'class' => 'yii\web\Session',
        'cookieParams' => ['httponly' => true, 'lifetime' => 3600 * 4],
        'timeout' => 3600*4, //session expire
        'useCookies' => true,
    ],

答案 1 :(得分:4)

问题在于Cookie过期时间。超时时,用户注销。 用于更改cookie过期时间的解决方案是为cookie生存期设置的会话组件的配置:

    'components' => [
       'session' => [
            'class' => 'yii\web\Session',
            'cookieParams' => ['lifetime' => 7 * 24 *60 * 60]
       ],
   ]

当用户登录时,当前示例中的Cookie到期时间是在一周之后。