中间件
from django.utils.deprecation import MiddlewareMixin
import jwt
from day5 import settings
# 自定义中间件
class CheckUserMiddleware(MiddlewareMixin):
def process_request(self,request):
# 注意,以后需要身份认证的请求,都将身份认证信息(jwt)添加在请求头中
# 请求头的解析方式request.headers.get('token')
# 1.提取请求头中的token
token = request.headers.get('token')
# 2.判断token是否存在
# 给request增加一个字段user_info 保存用户信息
if not token:
request.user_info = None
else:
# 3.token存在,解析token中的内容 解密
payload = jwt.decode(token,key=settings.SECRET_KEY,algorithms='HS256')
# 4.保存解析到的用户信息
request.user_info = payload
# 前端发的请求带有headers参数
# this.$axios.delete("/users/user/addr/", {
# data: {addr_id: id,},
# headers: {
# token: localStorage.getItem("token") || ""
# }
# })
# headers是后端传过去的用户信息然后保存在本地,读取本地信息
# payload = {
# 'id': user.id,
# 'username': user.username,
# 'mobile': user.mobiles
# # 'exp':datetime.datetime.now() + datetime.timedelta(seconds=300),
# }
# 每一个请求方法之前都需要进行身份验证