当前位置: 首页 > article >正文

day64 django中间件的复习使用

django中间件

'''
django中间件是django的门户
1.请求来的时候需要先经过中间件才能达到真正的django后端
2.响应走的时候也需要经过中间件
​
djangp自带七个中间件
'''
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',------session与之切切相关
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
​
# django支持程序员自定义中间件并且暴露给程序员五个可以自定义的方法
    1.必须要掌握的
        process_request
        
        process_response
        
    2.了解即可
        process_view
        process_template_response
        process_exception

img

如何自定义中间件

'''
1.在项目名或者应用名下创建一个任意名称的文件夹
2.在该文件内创建一个任意名称的py文件
3.在该py文件内需要数学类(这个类必须继承MiddlewareMixin)
    -然后在这个类里面就可以自定义五个方法(这五个方法用几个写几个,不需要全写)
4.需要将类的路径以字符串的形式注册到配置文件中才能生效
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',------session与之切切相关
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    '你的自定义中间件'
]
'''
    1.必须要掌握的
        # process_request ---- 请求来的时候
            1.请求来的时候需要经过每一个中间件里面的process_request方法
              -结果的顺序是按照配置文件中注册的文件顺序从上到下依次执行
            2.如果中间件里面没有定义该方法,那么就直接跳过执行下一个中间件
            3.如果该方法返回了HttpResponse对象那么请求不再继续往后执行,而是直接原路返回
              -功能类似于校验失败,不允许访问
              
            总结:process_request方法就是用来做全局相关的所有限制功能
            
        # process_response ---- 就是django后端返回给浏览器的内容
            1.响应走的时候需要经过每一个中间件里面的process_response方法
              -该方法有两个额外的参数request和response
            2.该方法必须返回一个HttpResponse对象
                1.默认返回的就是response
                2.你也可以自定义返回
            3.顺序是按照配置文件中注册了的中间件从下往上的顺序
            
        # 问:如果在第一个process_request方法就已经返回了HttpResponse对象,那么响应走的时候是经过所有的中间件里面的process_response还是有其他的情况
        答:会直接走同级别的process_response方法返回,接下来的中间件就不执行了
        
    2.了解即可
        # process_view
            路由匹配成功之后执行视图函数之前,会自动执行中间件里面的该方法
            顺序是配置文件中的注册的中间件从上往下依次执行
        # process_template_response
            返回的HttpResponse对象有render属性时候才会触发
            顺序是按照配置文件中注册的中间件从下往上依次经过
        # process_exception
            当视图函数中出现异常的情况下触发
            顺序也是从下往上的顺序
​

1701162224518

---------------------------------------------------------------------------------------------->>>注意看request和response的执行顺序

csrf跨站请求伪造

'''
与钓鱼网站有关
    我搭建一个跟正规网站一模一样的界面
    用户不小心进入到了我们的网站,用户给某人打钱
    打钱的操作的确是提交给了正规网站,用户的钱也确确实实减少了
    但是打钱的目标账户被改变了,变成了别的用户
    
内部本质:
    我们在钓鱼网站的页面,针对对方账户只给用户提供一个没有name属性的普通input框
    然后我们在内部隐藏一个已经写好的name和value的input框
    
如何规避:
    csrf跨站伪造校验
        网站在给用户返回一个具有提交数据功能的页面的时候会给这个页面加一个唯一标识
        当这个页面超后端发送post请求的时候,我们后端会先校验这个唯一标识,如果唯一标识不对,就会直接拒绝(403)如果成功,就正常执行
'''

如何符合校验

# form表单如何符合校验
    在form表单中写入{% csrf_token %}

csrf相关装饰器

'''
1.网站整体都不校验csrf,就单单几个视图函数需要校验
2.网站整体都需要csrf校验,就单单几个试图函数不需要校验
'''
装饰器导入:from django.views.decorators.csrf import csrf_protect,csrf_exempt
csrf_protect:需要校验
csrf_exempt:不需要校验


http://www.kler.cn/a/148953.html

相关文章:

  • 解锁微前端的优秀库
  • 使用API有效率地管理Dynadot域名,编辑账户中whois联系人信息
  • 【C语言】值传递和地址传递
  • Javaweb—Ajax与jQuery请求
  • 阅读2020-2023年《国外军用无人机装备技术发展综述》笔记_技术趋势
  • sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?
  • 【赠书第9期】巧用ChatGPT高效搞定Excel数据分析
  • grep笔记231128 grep的 -e , -E , -F , -G , -P 有什么区别
  • 不同路径(力扣LeetCode)动态规划
  • MS1242/MS1243:24bit 高精度、低功耗模数转换器
  • 视频集中存储/磁盘阵列EasyCVR平台黑名单异常解决步骤是什么?
  • Unity之ARFoundation如何实现BodyTracking人体跟踪
  • Django二转Day02
  • qml ParticleSystem3D使用介绍
  • 记录ruoyi-plus-vue部署的问题
  • 华为设备使用python实现文件自动保存下载
  • 封装一些可能会用到的JS的Dom操作方法(非JS自带的方法)
  • Python小知识
  • IWDG和WWDG HAL库+cubeMX
  • ruoyi-plus使用Statistic统计组件升级element-plus
  • 2023-简单点-机器学习中矩阵向量求导
  • 【Qt】获取当前系统用户名:9种获取方式
  • 企业如何选择安全又快速的大文件传输平台
  • 34 - 记一次线上SQL死锁事故:如何避免死锁?
  • Vue3-toRef 和 toRefs 函数
  • Minecraft Modding 模组制作-自定义方块