Как удалить токен URLSafeTimedSerializer после использования в Python?

Я создал токен, используя python itsdangerous URLSafeTimedSerializer для функции забытого пароля. Срок действия токена истекает после максимального возраста, но когда пароль сбрасывается, мне нужно истечь этот токен, чтобы пользователь не мог сбрасывать пароль с помощью токена снова и снова, пока он не истечет. Итак, вопрос в том, как истечь токен после того, как пользователь сбросит пароль?

1 ответ

Несмотря на комментарий @Uber, я понимаю вопрос. Также я считаю, что это скорее вопрос дизайна, поэтому размещение кода не имеет большого смысла. На этот раз я дам ответ, но не забудьте правильно написать вопрос на будущее, например, предоставить сценарий, такой как таблица вашей базы данных, и лучше описать последовательность действий для сброса пароля (см. https://stackru.com/help/how-to-ask).

Итак, предположим, вы генерируете токен через URLSafeTimedSerializer библиотека следующим образом:

from itsdanger import URLSafeTimedSerializer
ts = URLSafeTimedSerializer("my-secret-key")
token = ts.dumps(email, salt="my-salt")

Чтобы истечь срок действия такого токена, у вас есть разные возможности:

  1. Создайте черный список уже использованных токенов (не лучшая идея, так как он станет слишком длинным, и у вас могут возникнуть конфликты при создании токенов).
  2. Добавьте поле token_reset в свою пользовательскую таблицу и сохраните там текущий действующий токен. Как только пользователь воспользуется им, удалите его из таблицы. Если для пользователя нет токена, это будет означать, что он уже использовал его.
  3. Добавьте метку времени к вашему токену, чтобы, когда вы вернете его (вы можете расшифровать его с помощью библиотеки itsdanger), вы знали, истек ли он или нет (хотя пользователь может использовать его дважды за 5 минут).

Могут быть и другие способы решения такой проблемы, но решение №2 - наиболее часто используемое (по моему опыту). Если у других пользователей есть другие предложения, не стесняйтесь редактировать этот ответ.

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