购物车自定义简单中间件,身份验证

本文介绍了一个自定义的 Django 中间件,用于通过 JWT(JSON Web Tokens)进行用户身份验证。该中间件从请求头部获取 JWT,并使用设置中的密钥解码令牌来获取用户信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中间件

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),
# }

# 每一个请求方法之前都需要进行身份验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值