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