как сгенерировать токен, истекающий через 24 часа? - PullRequest
0 голосов
/ 17 января 2020

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

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.contrib.auth.tokens import PasswordResetTokenGenerator
from django.utils import six
from django.utils.crypto import constant_time_compare
from django.utils.http import base36_to_int


class AccountActivationTokenGenerator(PasswordResetTokenGenerator):
    def _make_hash_value(self, user, timestamp):
        return (
            six.text_type(user.pk) + six.text_type(timestamp) +
            six.text_type(user.is_active)
        )

    def check_token(self, user, token):
        # This is a copy and clean of the super check_token code removing what is not required in this case
        if not (user and token):
            return False
        try:
            ts_b36, _ = token.split("-")
            ts = base36_to_int(ts_b36)
        except ValueError:
            return False
        if (self._num_days(self._today()) - ts) > 1: # 1 day = 24 hours 
            return False
        return True

account_activation_token = AccountActivationTokenGenerator()

1 Ответ

0 голосов
/ 17 января 2020

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

request.session['token']=token

, а затем устанавливаете срок действия по

request.session.set_expiry(300) #this means 300 seconds or 5 minutes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...