CBV-3-csrf_token认证-中间件

Posted aaronthon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CBV-3-csrf_token认证-中间件相关的知识,希望对你有一定的参考价值。

1、settings.py没有注释到csrf。当post请求的方式会报错。

技术分享图片

接下来就解决问题!

1. django中间件        最多5个                  
- process_request     请求                 
- process_view                 
- process_response    相应                 
- process_exception   异常                 
- process_render_template 
             
2. 中间件执行流程:             
process_request>路由匹配 找到函数不执行>process_view 
>视图函数>process_response   
           
3. 中间件的作用                 
- 权限                 
- 用户登录验证     

4. django的csrf实现功能:        
csrf在process_view方法                        
- 检查视图是否被@csrf_exempt(免除csrf认证)                         
- 去请求体或cookie中获取token

1.FBV:情况一:csrf打开,个别不需要csrf认证。在方法的上方加@csrf_exempt 。这是全局使用csrf。

技术分享图片

技术分享图片

2.FBV:情况二:csrf注释,个别需要csrf认证。加@csrf_protect ,这是局部使用csrf。

技术分享图片

技术分享图片

1.CBV:情况一:csrf打开,个别不需要csrf认证。@method_decorator  全局使用csrf。

技术分享图片

运行结果:加在单独方法上是不行的,还是会报错。  

方式一:

技术分享图片

方式二:加载class类上,指定方法名。装饰的位置不一样。

技术分享图片

总结:
- 本质,基于反射来实现
- 流程:路由,view,dispatch(反射)
- 取消csrf认证(装饰器要加到dispatch方法上且method_decorator装饰)
                
扩展:
- csrf 
- 基于中间件的process_view方法
- 装饰器给单独函数进行设置(认证或无需认证)

 

以上是关于CBV-3-csrf_token认证-中间件的主要内容,如果未能解决你的问题,请参考以下文章

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

gin 中间件 权限认证

Django:用户认证组件 & 中间件

如何解决中间件认证错误? [复制]

Laravel 中间件 API 认证

护照认证回调不调用护照中间件