我试图在闲置一段时间后在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
答案 0 :(得分:4)
$authTimeout
- 公共财产。
如果用户保持不活动状态,用户将自动注销的秒数。如果未设置此属性,则在当前会话到期后用户将被注销(c.f。yii\web\Session::$timeout
)。
请注意,如果$enableAutoLogin
为true
,则无效。
答案 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
],