Django(32)自定义中间件——白名单

1,创建存放自定义中间件的文件这里选择在app01里创建mdws.py文件:

from django.shortcuts import redirect
from django.utils.deprecation import MiddlewareMixin
from django.conf import settings


class AuthMiddleware(MiddlewareMixin):

    def process_request(self, request):
        """ 如果用户已登录,则request中赋值 """

        user_id = request.session.get('user_id', 0)
        user_object = models.UserInfo.objects.filter(id=user_id).first()

        # 白名单:没有登录都可以访问的URL
        """
        1. 获取当用户访问的URL
        2. 检查URL是否在白名单中,如果再则可以继续向后访问,如果不在则进行判断是否已登录
        """
        if request.path_info in settings.WHITE_REGEX_URL_LIST:
            print(request.path_info)
            return

        # 检查用户是否已登录,已登录继续往后走;未登录则返回登录页面。
        if not request.tracer.user:
            return redirect('login')

2,注册中间件

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',
    'web.middleware.auth.AuthMiddleware'
]

白名单

WHITE_REGEX_URL_LIST = [
    "/register/",
    "/send/sms/",
    "/login/",
    "/login/sms/",
    "/image/code/",
    "/index/",
    "/price/",
]
posted @ 2021-12-06 23:09  下个ID见  阅读(309)  评论(0)    收藏  举报