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
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
|
||
|
|