В 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