axios拦截器是什么?

  axios拦截器可以拦截每一次的请求和响应,然后进行相应的处理。拦截器分为请求拦截器响应拦截器请求拦截器可以统一在你发送请求前在请求体里加上token;响应拦截器的话,是在接受到响应之后进行的一些操作,比如,服务器返回登录状态失效,需要重新登录的时候,就给它跳到登录页面;

拦截器的使用

我一般喜欢全局配置(main.js

请求拦截器

//  interceptors
axios.interceptors.request.use(config => {// 获取登录成功状态保持的tokenlet token = localStorage.getItem('token')// 如果有token就在头部加上tokenif (token) {config.headers['Authorization'] = token}return config},error => {// 如果没有token,返回错误的信息return Promise.reject(error.response);});

响应拦截器

axios.interceptors.response.use(function (response) {// 在接收响应做些什么,例如跳转到登录页......return response;}, function (error) {// 对响应错误做点什么return Promise.reject(error);});

拦截器超级好用~~~

Django中间件token验证

中间件相关

  中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。但是由于其影响的是全局,所以需要谨慎使用,使用不当会影响性能。说的直白一点,中间件是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在请求的特定的时间去执行这些方法。

自定义中间件

中间件可以定义五个方法,分别是:(主要的是process_requestprocess_response

  • process_request(self,request)
  • process_view(self, request, view_func, view_args, view_kwargs)
  • process_template_response(self,request,response)
  • process_exception(self, request, exception)
  • process_response(self, request, response)

以上方法的返回值可以是None或一个HttpResponse对象,如果是None,则继续按照django定义的规则向后继续执行,如果是HttpResponse对象,则直接将该对象返回给用户。

中间件的执行流程

  请求到达中间件之后,先按照正序执行每个注册中间件的process_reques方法process_request方法返回的值是None,就依次执行,如果返回的值是HttpResponse对象,不再执行后面的process_request方法,而是执行当前对应中间件的process_response方法。HttpResponse对象返回给浏览器。也就是说:如果MIDDLEWARE中注册了6个中间件,执行过程中,第3个中间件返回了一个HttpResponse对象,那么第4,5,6中间件的process_request和process_response方法都不执行,顺序执行3,2,1中间件的process_response方法。

用中间件进行登录认证

战术喝水~~ 上代码

# Author : Carl
# Date :2021/8/27 9:43
# File :tokenMiddleware.pyfrom django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixinimport jwtfrom meiduo import settingsclass TokenMiddleware(MiddlewareMixin):"""中间件生成Token"""def process_request(self, request):"""token认证:param request::return:token"""# 获取urlurl = request.get_full_path()# 定义一个白名单 注册登录接口 随便访问white_list = ['/sadmin/login/','/admin/']# 判断url在不在白名单中if url not in white_list:# 获取token jwttoken认证去认证token = request.META.get('HTTP_AUTHORIZATION')# 解析验证if token:# 解决原来的tokenold_token = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])# 重新生成tokennew_token = str(jwt.encode(old_token, settings.SECRET_KEY, algorithm='HS256'), encoding='utf8')if token == new_token:return Nonereturn HttpResponse('401')return None

总结

  在请求接口的时候,如果用户没有登录,则在请求到达中间件时放行,加入视图层,在视图层进行密码手机号,用户名,密码等的匹配,匹配成功之后,将生成的token返回到前端进行状态保持,使用拦截器在每一次请求的头部加上token(状态保持的token),由中间件对token进行解析对比,对比成功则进入视图层,否则,返回401(没有权限)。

ps:  希望我的分享能和大家一起成长,感谢每一个支持我的小伙伴,谢谢大家!!!别忘了一键三连哦!

Django中间件配合Vue拦截器的简单使用相关推荐

  1. .NET中间件以及VUE拦截器联合使用

    .NET中间件以及VUE拦截器联合使用 工作中遇见的问题,边学边弄,记录一下 Vue的UI库使用的是antvue 3.2.9版本的. 业务逻辑 特性 //特性public class ModelEsi ...

  2. Vue 拦截器原理和详细使用

    拦截器原理和作用 首先拦截器在src/utils/request.js 文件中,拦截器分为请求拦截器和响应拦截器. 页面中的每一个请求都会经过请求拦截和响应拦截,所以一般在这个文件进行操作. 这一文件 ...

  3. Vue 拦截器对token过期处理

    最近在做的一个项目,需要每个http请求下 都要添加token,这样无疑是增加了工作量.而vue 拦截器interceptors正好可以解决我们的需求. 1.  在vueresource情况下 设置t ...

  4. vue拦截器刷新登陆页面_Vue + Spring Boot 项目实战(六):前端路由与登录拦截器-Go语言中文社区...

    前言 这一篇主要讲前端路由与登录拦截器的实现.放在一起讲是因为我在开发登录拦截器时因为这个路由的问题遇到了很多坑,花费了很长时间,网上的解决方案都不怎么靠谱,综合了好几种办法才最终成功,其实关于这个部 ...

  5. vue拦截器设置请求头失败,laravel设置前端请求头跨域

    前端同事在vue的request里面的拦截器中设置请求头,发现'Authorization'可以正常添加到请求头,可以正常访问,但是添加其他的如'browserVersion'参数就不行, 会出现Re ...

  6. vue拦截器实现统一token,并兼容IE9验证

    项目中使用vue搭建前端页面,并通过axios请求后台api接口,完成数据交互.如果验证口令token写在在每次的接口中,也是个不小的体力活,而且也不灵活.这里分享使用vue自带拦截器,给每次请求的头 ...

  7. axios与拦截器的简单结合

    封装工具类 目的: 将配置文件与axios进行一个简单的结合,优化代码,简化发送请求的代码. 创建axios.js文件,最好创建个文件夹再放axios,以便将后续的统一请求的文件夹与axios文件同级 ...

  8. vue拦截器的使用(萌新怕不懂的看过来)

    由于我是第一次使用这个东西,我看到拦截器这个高大上的名字就感觉到害怕,所以做了这么多项目也怕接触这个东西,现在想到接口要进行处理,并且集中放置,所以利用了最近刚学的番茄时钟工作法,开了一个番茄,告诉自 ...

  9. Vue 拦截器的使用

    本文转载自: https://www.cnblogs.com/lhl66/p/8022823.html 作者:lhl66 转载请注明该声明. 拦截器 可以全局进行拦截器设置.拦截器在发送请求前或响应返 ...

最新文章

  1. cv::Exception问题
  2. 月份对比_6月份钢坯市场或将高位回落
  3. 2020中国十大最丑建筑出炉,你觉得哪个更丑?
  4. 百年理工计算机专业课程,这两所国内的百年理工院校,实力强劲,都是国内顶尖实力...
  5. Python高级网络编程系列之基础篇
  6. 【ES6入门04】:数值扩展
  7. c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
  8. 【CCNA学习实录】二进制 十进制 十六进制 VLSM
  9. 最简单的java代码【java基本语法】
  10. 10年老技术员教你免费的、完整的把 PDF 转换为 Word
  11. 用python完成《商务与经济统计(第13版)》课后练习——第7章和第8章
  12. 伍德里奇计量经济学第四章计算机答案,计量经济学中文答案 伍德里奇
  13. html中div圆角效果,div+css实现圆角即网页上常用的圆角效果
  14. 计算机协同工作,计算机协同工作的几种关键技术
  15. html中ul和li是什么单位,html中ul,ol和li的区别
  16. 两个jquery 类似igoogle的portlets插件
  17. Word一般文章格式
  18. 中国风android,小鱼天气 - 水墨古典中国风 #Android
  19. Pathon安装教程环境配置教程(Pathon2.7和3.7的区别)
  20. BUUCTF——CRYPTO(记录不熟悉的题)(4)

热门文章

  1. 亚马逊echo中国使用_我如何编程我的第一个Amazon Alexa技能并赢得了免费的Echo Dot...
  2. 「网络流 24 题」孤岛营救问题
  3. 什么是IP地址 IP地址的工作原理
  4. 导购提成怎么算_小公司怎么给销售算提成才合理?
  5. 信托专替卖家刷淘宝信用 制造虚假交易赚人
  6. 目标检测评价指标(一文看懂)
  7. node npm 升级
  8. [TJOI2017]可乐
  9. 程序员如何提高自己的编程水平?
  10. GDAL/OGR/OSR 坐标系ERROR 4: Unable to open EPSG support file gcs.csv osr.SpatialReference()