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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: YII: Время жизни сессии в Firefox

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
NeuroZ
Отправлено: 02 Апреля, 2014 - 15:06:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Обнаружил такой неприятный баг... Не пойму где копать.
Есть функция аутентификации (взята из хабра)
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 все работает корректно. Что это может быть? Почему мой браузер запоминает пользователя?

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



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




NeuroZ пишет:
Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?

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

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

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

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


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 02 Апреля, 2014 - 17:14:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Мелкий пишет:
NeuroZ пишет:
Если я ставлю короткое время жизни сессии (например минута), то как мне сделать, чтобы через минуту, после обновления страницы (или переходе на другую) меня автоматически разлогинивало?

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

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

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

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

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

(Отредактировано автором: 03 Апреля, 2014 - 08:59:59)

 
 Top
NeuroZ
Отправлено: 03 Апреля, 2014 - 09:55:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Проблему решил!
Оказывается если в Firefox стоит включенная настройка "показывать окна и вкладки открытые в прошлый раз" - он автоматически восстанавливает предыдущую сессию. Недовольство, огорчение
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB