Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: YII: Время жизни сессии в Firefox
Форумы портала PHP.SU » » CMS и фреймворки » YII: Время жизни сессии в Firefox

Страниц (1): [1]
 

1. NeuroZ - 02 Апреля, 2014 - 15:06:48 - перейти к сообщению
Обнаружил такой неприятный баг... Не пойму где копать.
Есть функция аутентификации (взята из хабра)
PHP:
скопировать код в буфер обмена
  1. public function login() {
  2.         if ($this->_identity === null) {
  3.             $this->_identity = new UserIdentity($this->username, $this->password);
  4.             $this->_identity->authenticate();
  5.         }
  6.         if ($this->_identity->errorCode === UserIdentity::ERROR_NONE) {
  7.             $duration = $this->rememberMe ? 3600 * 24 * 7 : 0; // 1 неделя
  8.             Yii::app()->user->login($this->_identity, $duration);
  9.             return true;
  10.         } else
  11.             return false;
  12.     }

Суть в том, что в хроме работает все нормально (если я не поставил галочку "помнить меня", то при перезагрузки браузера - я вновь неавторизован).
А вот в Firefox вообще все равно. Ставь/не ставь. - Хоть на следующий день открывай браузер - все равно сайт тебя помнит.

Что делать? Как с этим бороться, подскажите.

p.s. И еще в довесок вопрос. Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?
(Добавление)
Есть интересней инфа. На другом компе, на той же версии firefox все работает корректно. Что это может быть? Почему мой браузер запоминает пользователя?

И второй вопрос остался актуален:
Цитата:
Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?
2. Мелкий - 02 Апреля, 2014 - 16:27:06 - перейти к сообщению
NeuroZ пишет:
Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?

У сессии нет времени жизни. Есть время, после которого она может быть удалена.
Это две очень разные штуки. И отдельное внимание на "может".

Ограничение времени авторизации - запишите в сессию дату, до которой её надлежит быть активной. В том же месте, где проверяете, авторизован ли пользователь сейчас, проверяйте эту дату. Если она в будущем - то юзер авторизован, если уже в прошлом - то убираете признак авторизации.

NeuroZ пишет:
Хоть на следующий день открывай браузер - все равно сайт тебя помнит.

Во-первых, смотрите куки.
3. NeuroZ - 02 Апреля, 2014 - 17:14:41 - перейти к сообщению
Мелкий пишет:
NeuroZ пишет:
Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?

У сессии нет времени жизни. Есть время, после которого она может быть удалена.
Это две очень разные штуки. И отдельное внимание на "может".

Ограничение времени авторизации - запишите в сессию дату, до которой её надлежит быть активной. В том же месте, где проверяете, авторизован ли пользователь сейчас, проверяйте эту дату. Если она в будущем - то юзер авторизован, если уже в прошлом - то убираете признак авторизации.

NeuroZ пишет:
Хоть на следующий день открывай браузер - все равно сайт тебя помнит.

Во-первых, смотрите куки.

Проблему с авторазлогиниванием я решил: в настройках приложения есть такой параметр 'authTimeout' => 86400,
А вот проблему с тем, что после перезакрытия браузера - я остаюсь залогиненым не могу решить. Причем на другой машине с этим же браузером все нормально. Не могу понять в чем вообще может быть причина. В куках ничего интересного нет. Там PHPSESSID и YII_CSRF_TOKEN зашифрованные висят.
-Но так они везде висят. (там где нормально код работает тоже)
4. NeuroZ - 03 Апреля, 2014 - 09:55:23 - перейти к сообщению
Проблему решил!
Оказывается если в Firefox стоит включенная настройка "показывать окна и вкладки открытые в прошлый раз" - он автоматически восстанавливает предыдущую сессию. Недовольство, огорчение

 

Powered by ExBB FM 1.0 RC1