Django操作cookie和session

内容概要

  • Django操作cookie和session
  • CBV添加装饰器
  • 中间件

内容详细

Django操作cookie和session

        # session的默认过期时间是14天

        '''在负载均衡中,如果使用session保存用户信息,会出现session共享问题?'''
        那么, 如何解决上述问题?

        常用的缓存数据库就是redis

        '''
            1. 缓存雪崩
            2. 缓存穿透
            3. 缓存击穿
        '''
        '''在settings.py中配置'''

        SESSION_COOKIE_NAME = "sessionid"                       # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
        SESSION_COOKIE_PATH = "/"                               # Session的cookie保存的路径(默认)
        SESSION_COOKIE_DOMAIN = None                             # Session的cookie保存的域名(默认)
        SESSION_COOKIE_SECURE = False                            # 是否Https传输cookie(默认)
        SESSION_COOKIE_HTTPONLY = True                           # 是否Session的cookie只支持http传输(默认)
        SESSION_COOKIE_AGE = 1209600                             # Session的cookie失效日期(2周)(默认)
        SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否关闭浏览器使得Session过期(默认)
        SESSION_SAVE_EVERY_REQUEST = False                       # 是否每次请求都保存Session,默认修改之后才保存(默认)

CBV添加装饰器

        from django.views import View
        from django.utils.decorators import method_decorator


        @method_decorator(login_auth, 'get')  # 第二种方式添加
        @method_decorator(login_auth, 'post')
        class IndexView(View):
            @method_decorator(login_auth)  # 第三张方式给所有的方法添加装饰器
            def dispatch(self, request, *args, **kwargs):
                return super().dispatch(request, *args, **kwargs)

            # @method_decorator(login_auth)  # 第一种方式添加装饰器
            def get(self, request):
                return HttpResponse('get')

            def post(self, request):
                return HttpResponse('post')

中间件

        django给我们提供了7个中间件,在配置文件中查询
        MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            # 'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
        ]

        # 还支持我们自定义中间件
        '''
            中间件用来干嘛:
                1. 校验权限
                2. 限制访问频率
                3. 检查认证
                ...
        '''

        步骤:
            1. 在任何一个应用下面,创建一个py文件
            2. 在py文件中写一个类必须要继承MiddlewareMixin
            3. 中间写完之后,一定要到配置文件中注册中间件

        需要我们掌握的
            '''
                1. process_request
                    请求来的时候会走
                2. process_response
                    请求走的时候会走
            '''
        from django.shortcuts import render, HttpResponse
        from django.utils.deprecation import MiddlewareMixin


        class Mydd1(MiddlewareMixin):
            def process_request(self, request):
                print('第一个process_request')
                return HttpResponse('第一个process_request')

            def process_response(self, request, response):
                print('第一个process_response')
                return response  # 必须要返回一个response对象


        class Mydd2(MiddlewareMixin):
            def process_request(self, request):
                print('第二个process_request')

            def process_response(self, request, response):
                print('第二个process_response')
                return response  # 必须要返回一个response对象

posted @ 2022-03-28 14:35  风花雪月*  阅读(43)  评论(0编辑  收藏  举报