You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
816 B
Python

2 years ago
import time
import datetime
import jwt
from django.conf import settings
from rest_framework.response import Response
from django.contrib.auth.models import User
def generate_token(user):
"""
:param user: 用户对象
:return: 生成的token
"""
payload = {
'user_id': user.id,
'username': user.username,
'exp': datetime.datetime.utcnow() + datetime.timedelta(weeks=1) # token过期时间 1week
}
token = jwt.encode(payload=payload, key=settings.SECRET_KEY, algorithm='HS256')
return token
def decode_token_exp_time(token):
try:
res_dict = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
exp = res_dict.get('exp')
exp_time = time.ctime(exp)
return exp_time
except Exception as e:
return None