authTimeout в Yii2

Я пытаюсь автоматически выйти из системы в 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


person user7282    schedule 06.05.2015    source источник
comment
Ожидаете ли вы полностью автоматический выход из системы? Я думаю, что это произойдет только в том случае, если пользователь не был активен в течение этого времени, а затем попытался открыть/обновить определенную страницу.   -  person arogachev    schedule 06.05.2015
comment
я хочу, чтобы пользователь был перенаправлен на сайт/логин   -  person user7282    schedule 06.05.2015
comment
Я спросил о деталях этого. Пользовательский javascript необходим для достижения полного автоматического выхода из системы. См. ответ @Pavel Bariev.   -  person arogachev    schedule 06.05.2015
comment
тогда какая разница значение для authTimeout приносит системе?   -  person user7282    schedule 06.05.2015


Ответы (6)


$authTimeout - общественная собственность.

Количество секунд, в течение которых пользователь автоматически выйдет из системы, если он остается неактивным. Если это свойство не установлено, пользователь выйдет из системы после истечения срока действия текущего сеанса (см. yii\web\Session::$timeout).

Обратите внимание, что это не сработает, если $enableAutoLogin равно true.

person Andrei Putivet    schedule 29.05.2015

Ваш конфиг правильный. Но он не будет автоматически обновлять вашу страницу и показывать вам форму входа. Технически он выйдет из системы только при следующем запросе после истечения срока действия сеанса. И вы должны знать, что ajax-скрипты работают на вашей странице и вызывают некоторые другие страницы по временному интервалу. Каждый запрос будет продлевать тайм-аут вашего сеанса. Также есть параметр «absoluteAuthTimeout» вместо «authTimeout», который выведет вас из системы по истечении тайм-аута, несмотря на вашу активность.

person Pavel Bariev    schedule 06.05.2015
comment
Но это не работает . Я также пробовал absoluteAuthTimeout - person user7282; 06.05.2015
comment
Именно это я и хочу уточнить/пояснить в своем комментарии. Подробностей об этом пользователь не сообщил. - person arogachev; 06.05.2015

Вы также можете использовать

session.gc_maxlifetime

настройка в php.ini

По умолчанию это 1440 секунд.

person uglovvic uglovvic    schedule 09.12.2015

В вашем файле config/web.php:

В массиве $config:

...

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

...

Обратите внимание, что я прокомментировал //enableAutoLogin, что мешает authTimeout работать должным образом.

person Mr_LinDowsMac    schedule 31.07.2015

если вы хотите выйти из системы через X раз. Вы должны проверять с помощью ajax каждую секунду. Если срок действия истек, перенаправление на выход

person rakhmatov    schedule 16.07.2016
comment
Я также реализовал эту функциональность только этим методом - person user7282; 17.07.2016

Просто удалите «enableAutoLogin» из вашей пользовательской конфигурации, и все будет работать нормально.

Ваш код должен выглядеть так:

'user' => [
            'identityClass' => 'app\models\User',
            'authTimeout'=>100
        ],
person Ragheb AlKilany    schedule 06.12.2016