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/",
]
浙公网安备 33010602011771号