У меня есть приложение Yii 1.x, которое использует компонент WebUser для раздела входа на веб-сайт — в моем config/main.php у меня есть следующий блок в разделе моих компонентов, который автоматически отключит сеанс через 2 часа (например, 3600 x 2 или 7200 секунд).
Это прекрасно работает в том смысле, что пользователь «выгоняется» из моего приложения через заданное количество секунд, но как мне изменить это, чтобы этот выход из системы определенных «типов» пользователей с разным сроком действия.
например, если тип пользователя == 1, то выйдите из системы через 3600 секунд, если тип пользователя == 2, затем выйдите из системы через 7200 секунд...
// config/main.php
'components' => array(
'user' => array(
'class' => 'application.components.WebUser',
'allowAutoLogin' => true,
'loginUrl' => array('frontend/user/login'),
'loginRequiredAjaxResponse' => 'CR_SESSION_EXPIRED',
'authTimeout' => 3600*2, // auto-logout after 2 hours
),
.......
Примечание. Здесь используется Yii 1.x, а не Yii 2.0.
Я предполагаю, что это должно быть в рамках интеграции WebUser, а не в файле конфигурации.
-- обновление -- я добавил следующий блок в компонент WebUser.php (расширяющий CWebUser)
public function init() {
parent::init();
if (($user = $this->getState('userModel')) !== null) {
$this->authTimeout = 5;
$this->absoluteAuthTimeout = 5;
$this->setUserData(unserialize($user));
}
}
Я установил authTimeout и absoluteAuthTimout на 5 секунд, но я все еще остаюсь в системе через 5 секунд ... есть идеи?
$authTimeout
, перезаписав функциюinit()
вашего классаWebUser
? Вы можете основывать это на значениях, хранящихся в вашей конфигурации. В вашем файле конфигурации не должно быть никакой логики, только значения. - person Jelle de Fries   schedule 23.04.2015parent::init();
после вашей логики. Теперь он сначала устанавливает сеанс, а затем устанавливает новый$authTimeout
. - person Jelle de Fries   schedule 23.04.2015