本文介绍: ”’1.在项目名或者应用名下创建一个任意名称文件夹2.在该文件内创建一个任意名称py文件3.在该py文件需要数学类(这个类必须继承MiddlewareMixin)-然后这个里面可以自定义五个方法(这五个方法用几个写几个,不需要全写)4.需要将类的路径字符串的形式注册配置文件中才能生效django.contrib.sessions.middleware.SessionMiddleware‘,——session与之切切相关‘你的自定义中间件””

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方法
              -该方法有两个额外参数requestresponse
            2.该方法必须返回一个HttpResponse对象
                1.默认返回的就是response
                2.你也可以自定义返回
            3.顺序是按照配置文件注册了的中间件从下往上的顺序
            
        # 问:如果在第一个process_request方法就已经返回了HttpResponse对象,那么响应走的时候是经过所有的中间件里面的process_response还是有其他的情况
        答:会直接同级别的process_response方法返回,接下来的中间件就不执行了
        
    2.了解即可
        # process_view
            路由匹配成功之后执行视图函数之前,会自动执行中间件里面的该方法
            顺序是配置文件中的注册的中间件从上往下依次执行
        # process_template_response
            返回的HttpResponse对象有render属性时候才会触发
            顺序是按照配置文件注册的中间件从下往上依次经过
        # process_exception
            当视图函数出现异常的情况下触发
            顺序也是从下往上的顺序
​

1701162224518

———————————————————————————————->>>注意看requestresponse执行顺序

csrf跨站请求伪造

'''
与钓鱼网站有关
    我搭建一个跟正规网站一模一样的界面
    用户不小心进入到了我们网站用户给某人打钱
    打钱的操作的确是提交给了正规网站,用户的钱也确确实实减少了
    但是打钱的目标账户被改变了,变成了别的用户
    
内部本质我们在钓鱼网站页面针对对方账户只给用户提供一个没有name属性的普通input框
    然后我们内部隐藏一个已经写好的namevalueinput如何规避:
    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:不需要校验

原文地址:https://blog.csdn.net/qq_65092135/article/details/134674268

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43668.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注