Я создал постоянное приложение для входа, основанное на этих принципах (From: http://jaspan.com/improved_persistent_login_cookie_best_practice )
- Когда пользователь успешно войдет в систему с помощью параметра «Запомнить меня», в дополнение к стандартным файлам cookie управления выпуском создается файл cookie для входа. [2]
- Файл cookie для входа содержит имя пользователя пользователя, идентификатор серии и токен. Серия и токен – это неопровержимые случайные числа из достаточно большого пространства. Все три сохраняются вместе в таблице базы данных.
- Когда пользователь, не зарегистрированный пользователем, посещает сайт и представляет файл cookie для входа, имя пользователя, серия и токен просматриваются в базе данных.
- Если триплет присутствует, пользователь считается аутентифицированным. Используемый токен удаляется из базы данных. Создается новый токен, который хранится в базе данных с именем пользователя и идентификатором той же серии, и новый пользовательский файл cookie, содержащий все три, выдается пользователю.
- Если имя пользователя и серия присутствуют, но токен не совпадает, предполагается кража. Пользователь получает строго сформулированное предупреждение, и все пользовательские сеансы пользователя удаляются.
- Если имя пользователя и серия отсутствуют, файл cookie для входа игнорируется.
Я понимаю, что я повторно выдаю новый токен после успешной первоначальной аутентификации. Но после этого я повторно выдаю новый токен на других страницах, требующих проверки подлинности, продолжая проверять этот постоянный файл cookie.
Или я, после первоначальной успешной проверки подлинности, помечает пользователя как зарегистрированного и только аутентифицируется с этой точки вперед сессией и сохраняет этот первоначальный повторно опубликованный файл cookie, когда пользователь пытается получить доступ к сайту после истечения текущего сеанса (т. Е. закрытый браузер и т. д.)?
Я проголосовал за второй вариант. Если ничего другого, постоянное обновление файла cookie auth – это удар производительности. (небольшой, но все же ненужный). При успешном входе в систему напишите файл cookie. Как только пользователь находится на сайте, используйте только значения сеанса.
Вы проверяете только файл cookie для входа, когда пользователь пытается получить доступ к сайту без текущего файла cookie сеанса. Вот как я бы понял принцип № 3.
Когда пользователь, не зарегистрированный пользователем, посещает сайт и представляет файл cookie для входа, имя пользователя, серия и токен просматриваются в базе данных.
(Акцент мой.)
Кроме того, если логически логически думать, не было бы смысла использовать куки-файл сеанса и файл cookie для входа, если вы все равно будете проверять и перевыпускать файл cookie для входа на каждом pageload.