Управление продолжительностью жизни токена с помощью SimpleCookie в Python

уже есть токен, работающий правильно, который установлен следующим образом:

session_cookie = SimpleCookie()
session_cookie['key'] = any_string_value
session_cookie['key']["Path"] = '/'

headers = []
headers.extend(("set-cookie", morsel.OutputString())
    for morsel
    in session_cookie.values())

start_response(status, headers)

Я также могу прочитать токен и извлечь необходимую мне информацию:

# Get cookies
cookies = request.get_cookies()
#     Get current token from cookies
token   = cookies['token'].value

теперь, какой был бы лучший подход для установки срока действия cookie, я знаю, что есть 2 возможных ключа:

  1. session_cookie ['key'] ['max-age'] = "время в секундах"
  2. session_cookie ['key'] ['expiration'] = "дата в будущем"

Как я мог знать если токен истек или что может быть лучшим способом управления истекшими токенами ?

Спасибо большое!

1 ответов


вы можете узнать, истек ли токен, если токен не существует, когда вы пытаетесь его получить.

token   = cookies['token'].value #this will not exist

браузер удаляет cookie и все, что связано с этим, когда срок годности проходит.

таким образом, во многих реализациях вы можете даже удалить cookies или, например, выйти из системы, но установить дату истечения срока действия файла cookie user_id на что-то в прошлом( например, отрицательное число).

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

надеюсь, я помог.

редактировать

от rfc2109

Max-Age=Дельта-секунды Необязательный. Атрибут Max-Age определяет время жизни куки, через несколько секунд. Значение Дельта-секунд является десятичным не- отрицательное целое число. По истечении Дельта-секунд секунд клиент следует отказаться от печенья. Нулевое значение означает cookie следует немедленно отбросить.

и Вики по HTTP cookie-файлы

директива Expires сообщает браузеру, когда удалить файл cookie. Производный от формата, используемого в RFC 1123, дата указывается в форма "Wdy, DD Mon YYYY HH: MM: SS GMT", [29] с указанием точного дата/время истечения. В качестве альтернативы настройке cookie срок действия, как абсолютная дата/время, RFC 6265 позволяет использовать Атрибут Max-возраст установить срок действия куки как интервал секунды в будущем, относительно времени, полученного браузером этот печенье.

я бы рекомендовал использовать max-age, потому что сохраняет некоторые проблемы от установки дат и т. д. Вы просто вычисляете интервал.

читая немного больше, я обнаружил, что max-age не поддерживается IE

максимальный возраст vs истекает

Это должно помочь ;-)