IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 自定义中间件生成token -> 正文阅读

[Python知识库]自定义中间件生成token

1.pyjwt

安装

pip install pyjwt

生成jwt

class LoginAPIVIew(APIView):
    # 登录
    def post(self,request):
        username = request.data.get('username')
        password = request.data.get('password')
        user = Admin_user.objects.filter(username=username).first()
        if user and check_password(password,user.password):
            token = jwt.encode({'data':{'userid':user.id,'username':user.username,'pic':user.pic}},settings.SECRET_KEY,algorithm='HS256')
            return Response({'msg':'登录成功','code':200,'username':user.username,'pic':user.pic,'userid':user.id,'token':token,})
        else:
            return Response({'msg':'账号或密码错误'})

验证token

自定义中间件,新建一个token_middleware.py

class TokenMiddleware(MiddlewareMixin):
    def process_request(self,request):
        # 1.获取到url =request.get_full_path()  http://localhsot:32r4/sadmin/test/
        url = request.get_full_path()
        # 2.定义一个白名单 list=['/sadmin/login','/sadmin/reg']
        list=['/sadmin/login/','/sadmin/reg/']
        # 3.判断 url not in list:
        if url not in list:
        # 4.获取token jwttoken 认证去认证
            token = request.META.get('HTTP_AUTHORIZATION')
            #4.1解析验证
            if token:
                #解决原来的token
                s = jwt.decode(token, settings.SECRET_KEY,algorithms=['HS256'])
                #重新生成token
                newtoken = jwt.encode({'data':s},settings.SECRET_KEY,algorithm='HS256')
                if token == newtoken:
                    return None
            return HttpResponse(401)
        return None
        # 4.通过return None
        # 6.不能过 httpResponse('401')

Settings.py中配制

子应用名.文件名.类型
'sadmin.token_middeware.TokenMiddleware'

vue请求

var token = localStorage.getItem('token')
this.axios.get('sadmin/test/',{headers: { "Authorization": token }}).then(res=>{
  if(res.data == 401){
  alert('登录后访问')
  }
})

拦截器

#interceptors main.js
axios.interceptors.request.use(
  config => {
    if(localStorage.getItem('token')){
      config.headers['Authorization'] = localStorage.getItem('token');
    }
    return config;
  },
  error => {
    return Promise.reject(error.response);
  });
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:01:04  更:2021-08-30 12:02:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:25:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码