使用pyjwt进行生成token并添加用户表
import jwt
token = jwt.encode({'user_id': user.id}, 'secret', algorithm='HS256')
UserModel.objects.filter(id=user.id).update(token=token, expired_at=time.time() + 7200)
使用中间件进行token验证以及过期时间的验证
首先注册中间件
'user.middlewares.Authorization'
创建中间件文件并写入一下代码
#### 自定义中间件的请求
import time
from django.utils.deprecation import MiddlewareMixin; #### 导入包文件
from django.http import JsonResponse;
from .models import *
#### 定义中间件的类方法
class Authorization(MiddlewareMixin):
### 前置拦截器,请求前触发的方法
def process_request(self, request):
try:
#### 判断请求的如果不是登录的Api接口,判断token的内容
if not ('login' in request.path or 'upload' in request.path or 'media' in request.path):
#### 获取token值
token = request.headers.get("token")
#### 没有传递token值
if not token:
return JsonResponse({
'code': 401,
'msg': 'token无效'
})
### 通过token值获取用户的信息,判断token是否合理
user = UserModel.objects.filter(token=token).first()
#### 没有token值
if not user:
return JsonResponse({
'code': 401,
'msg': 'token不存在'
})
#### 判断用户的时间是否过期
if user.expired_at < time.time():
return JsonResponse({
'code': 401,
'msg': 'token已经过期'
})
except Exception:
return JsonResponse({
'code': 401,
'msg': 'token无效'
})
: