Иногда не восстанавливается состояние, установленное в UserIdentity при использовании enableCookieValidation.
<?php
class UserIdentity extends CUserIdentity {
public function authenticate(){
// … аутентификация через модель User
// устанавливаем состояние
Yii::app()->user->setState('role', $user->role);
// … возвращаем код ошибки
}
// …
}
После этого в контроллере я вывожу состояние и данные сессии (только уже аутентифицированным, чтобы не было проблем с заголовками):
CVarDumper::dump(Yii::app()->user->getState('role'), 10, true);
CVarDumper::dump($_SESSION, 10, true);
Сразу после аутентификации получаю:
'admin' array
(
[a50e1d18405b8133824c7f770e7bc5dcrole] => 'admin'
[a50e1d18405b8133824c7f770e7bc5dcuseHttps] => false
[a50e1d18405b8133824c7f770e7bc5dc__id] => 19
[a50e1d18405b8133824c7f770e7bc5dc__name] => 'Alexander'
[a50e1d18405b8133824c7f770e7bc5dc__states] => array()
)
Большую часть времени я получаю ту же самую информацию, но иногда (возможно, по прошествии 1-2-х дней), получаю:
null array
(
[a50e1d18405b8133824c7f770e7bc5dc__id] => 19
[a50e1d18405b8133824c7f770e7bc5dc__name] => 'Alexander'
[a50e1d18405b8133824c7f770e7bc5dc__states] => array()
)
Таким образом, данных о состоянии нет. При этом пользователь аутентифицирован.
Проверил на двух серверах и разных браузерах — проблема есть.