Я использую токены jwt в Django.У меня есть время истечения 5 минут для всех пользователей. Но я хочу изменить время истечения пользователя в зависимости от роли.Как я могу добиться этого в Django, используя SIMPLE JWT модуль.
SIMPLE_JWT = {
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=5),
'REFRESH_TOKEN_LIFETIME': timedelta(days=1),
'ROTATE_REFRESH_TOKENS': False,
'BLACKLIST_AFTER_ROTATION': True,
}
отредактированный код:
SUPERUSER_LIFETIME = datetime.timedelta(seconds=10)
class MyTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super(MyTokenObtainPairSerializer, cls).get_token(user)
starttime = datetime.datetime.now()
timelimit = datetime.timedelta(seconds=10)
endtime = (timelimit + datetime.datetime.now())
expirytime = int(endtime.timestamp())
token['name'] = user.username
token['user_id'] = user.id
if user.is_superuser:
print("EXPIRY TIME ",expirytime)
print("SUPERUSER LIFETIME ",SUPERUSER_LIFETIME)
token.set_exp(lifetime=SUPERUSER_LIFETIME)
return token
class MyTokenObtainPairView(TokenObtainPairView):
serializer_class = MyTokenObtainPairSerializer
, когда я печатаю SUPERUSER LIFETIME, он показывает разницу в 10 секунд. Но когда я пытаюсьдля декодирования токена доступа показывается время по умолчанию 300 сек.в чем здесь может быть проблема?