Как сбросить функцию Zend RememberMe при каждом автоматическом входе? - PullRequest
2 голосов
/ 24 февраля 2012

Я использую флажок запомнить меня, реализованный с функцией Zend запомнитьMe для автоматического входа в систему. Я написал это условие внутри контроллера для входа в систему, но я хочу, чтобы он сбрасывался до 7 дней при каждом автоматическом входе в систему (если текущий вход в систему является автоматическим).

$ секунд = 60 * 60 * 24 * 7; // 7 дней
Zend_Session :: RememberMe (секунд $);

Есть ли функция Zend по умолчанию для обновления куки при каждом доступе. Кстати, я новичок в кодировании. Надеюсь, кто-нибудь может мне помочь. Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2012

Вы не хотите устанавливать cookie, используя Zend_Session::rememberMe() при каждом доступе.Причина этого заключается просто в том, что каждый вызов rememberMe() приводит к созданию нового идентификатора сеанса и замене файла cookie на новый с новым идентификатором.Данные из старого сеанса копируются в новый, а старый сеанс удаляется.

Несмотря на то, что из этого не будет никакого реального вреда, выполнение каждого запроса сопряжено с дополнительными затратами.По словам Zend, лучше всего вызывать это после начала сеанса.

Кроме того, если вы сделали это безоговорочно для каждого запроса, единственный способ отличить автоматический вход в систему после длительного времени и случайныйпросмотр будет хранить метку времени в сеансе и проверять ее в начале каждого запроса и устанавливать лимит времени, чтобы определить, что человек ушел.

Вместо этого вы можете сделать это, когда посетитель возвращаетсяна страницу входа для входа;затем вы можете перенаправить их, и они войдут в систему без аутентификации.

Или, если вы хотите периодически обновлять cookie-файл сеанса, вы можете вызвать rememberMe() в вашем файле Bootstrap.php после того, как вы запустите сеанс.,Если вы запускаете сеанс с помощью плагина или непосредственно в контроллерах, вы должны поместить вызов Remember Me туда после начала сеанса и делать это очень часто (на ваше усмотрение).

См. session_regenerate_id () , который вызывается при вызове Zend_Session::rememberMe() и Zend Framework - Идентификаторы сеанса , а также следующий раздел об угоне и фиксации сеанса.

0 голосов
/ 24 февраля 2012

Вы не можете использовать Zend_session для этого. Используйте куки, чтобы помнить меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...