Django PyJwt: как выйти из системы для конкретного входа в систему путем изменения секретного ключа - PullRequest
0 голосов
/ 31 января 2020

В Django я разрабатываю API для входа и выхода пользователя.

Я использую аутентификацию на основе токенов Jwt. У меня есть 30-дневный срок действия токена

jwt.encode(
        payload =  { user_id='2', exp= datetime.datetime.utcnow() + datetime.timedelta(days=30)},
        key,
        algorithm
    )

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

Поэтому предлагаемое решение:

В вашей пользовательской модели добавьте поле:

jwt_secret = models.UUIDField(default=uuid.uuid4

И когда один выход из системы изменяет секретный ключ пользователя

Logout_view(request)
    request.user.jwt_secret = uuid.uuid4()
    request.user.save()

Но это будет выход из всех браузеров

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

Поэтому ключ, передаваемый в коде jwt.encode, должен выглядеть примерно так:

key = function (USER_SECRET_KEY & key based on login instance of that user)

Как это сделать в django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...