Как сбросить функцию Zend RememberMe при каждом автоматическом входе?

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам