import jwt
import time
#加密
jwt.encode({payload},key,algorithm)
#key:自定义的字节串或字符串
#payload:具体内容自己添加,分为公有声明和私有声明,字典类型
#algorithm:使用的哈希算法
#返回值为字节串
#示例:
key = xxx
exp = yyy
now_time = time.time()
token = jwt.encode({'username':'Terry','exp':int(now_time+exp)},key,algorithm='HS256')
#解密
jwt.decode(token,key,algorithm)
e.g. jwt.decode(token,TOKEN_KEY,algorithms='HS256')
#校验内容
1. 比对从token中取出的key对应的值,和各种请求中传来的值
2. 查看时间是否过期
如果不对,解密时报错
django 从token中取出用户名并从数据库中取出该用户对象
def get_user_id(request):
#取token
token = request.META.get('HTTP_AUTHORIZATION')
#若没取出token,则用户未登录
if not token:
return None
#若token不对,返回一个none
try:
res = jwt.decode(token,TOKEN_KEY,algorithms='HS256')
except Exception as e:
return None
#如果没报错,拿出username
username = res['username']
#从数据库中取出用户对象
users = UserProfile.objects.filter(username=username)
if not users:
return None
user = users[0]