在Yii2中的authTimeout

时间:2015-05-06 10:50:11

标签: yii2 yii2-user

我试图在闲置一段时间后在yii2内自动注销用户。 在web.php我添加了

'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
            'authTimeout'=>100
        ],

components内。我正在使用基本模板。但它没有自动退出。这在Yii2中有用吗?我正在关注http://www.yiiframework.com/doc-2.0/yii-web-user.html

的文档

6 个答案:

答案 0 :(得分:4)

$authTimeout - 公共财产。

如果用户保持不活动状态,用户将自动注销的秒数。如果未设置此属性,则在当前会话到期后用户将被注销(c.f。yii\web\Session::$timeout)。

请注意,如果$enableAutoLogintrue,则无效。

答案 1 :(得分:1)

您的配置正确无误。但它不会自动刷新您的页面并显示您的登录表单。从技术上讲,它会在会话过期后仅在下一个请求中将您注销。您应该知道在您的页面上工作的ajax脚本并按时间间隔调用其他一些页面。每个请求都会续订会话超时。 还有" absoluteAuthTimeout"参数而不是" authTimeout" - 即使您有活动,也会在超时后将您注销。

答案 2 :(得分:0)

config/web.php文件中:

$config数组中:

...

'user' => [
            'identityClass' => 'app\models\User',
            //'enableAutoLogin' => true,
            'enableSession' => true,
            'authTimeout' => 60,
        ],

...

请注意我评论//enableAutoLogin,阻止authTimeout正常工作

答案 3 :(得分:0)

您也可以使用

session.gc_maxlifetime

在php.ini中设置

默认情况下为1440秒。

答案 4 :(得分:0)

如果您想在X时间之后注销用户。你应该每秒检查ajax。如果过期重定向则退出

答案 5 :(得分:0)

只需删除" enableAutoLogin"从您的用户配置,它将正常工作。

您的代码应如下所示:

'user' => [
            'identityClass' => 'app\models\User',
            'authTimeout'=>100
        ],