django中进行token的验证

使用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无效'
            })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值