Я пытаюсь собрать веб-токен Json в Python django, используя библиотеку pyjwt , ссылаясь на предложение Madhu_Kiran_K из stackoverflow ссылка
ВПриведенный ниже код: «Попытка» Создает веб-токен JSON, в котором хранится идентификатор этого пользователя, адрес электронной почты и срок действия которого составляет 2 дня в будущем.Я могу успешно закодировать и декодировать токен, чтобы получить всю необходимую информацию о пользователях и срок действия токена.
Мои требования сейчас:
1.) Пожалуйста, как мне проверитьи убедитесь, что токен, отправленный клиентом, все еще действителен и, следовательно, не подделан.
2.) как проверить время истечения срока действия и распечатать сообщение.Вот что я сделал для этого
#check if the token were tampered
if content['user_id'] =='' or content['email'] == '':
print("Invalid Token")
else:
print("Token is still valid")
#check if token has expired after 2 days
if content['exp'] > dt:
print("Token is still active")
else:
print("Token expired. Get new one")
Проверка истечения времени возвращает сообщение об ошибке, которое не поддерживается между экземплярами int и datetime.datetime. Какой правильный способ проверки.Спасибо
ниже полный код
#!/usr/bin/python
import sys
import re
import json
from datetime import datetime, timedelta
import jwt
#https://www.guru99.com/date-time-and-datetime-classes-in-python.html
#timedelta(days=365, hours=8, minutes=15)
#'exp': int(dt.strftime('%s'))
dt = datetime.now() + timedelta(days=2)
encoded_token = jwt.encode({'user_id': "abc", 'email': "nancy@gmail.com", 'exp': dt }, 'MySECRET goes here', algorithm='HS256')
print(encoded_token)
#decode above token
decode_token=jwt.decode(encoded_token, 'MySECRET goes here', algorithms=['HS256'])
content = decode_token
print(content)
print(content['user_id'])
print('json token successfully retrieved')
if content['user_id'] =='' or content['email'] == '':
print("Invalid Token")
else:
print("Token is still valid")
#check if token has expired after 2 days
if content['exp'] > dt:
print("Token is still active")
else:
print("Token expired. Get new one")