Django设置中间件,不登录不能访问的接口
1、在 django 项目中新建文件夹 middleware 目录,在此目录下新建一个中间件文件:auth.py
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import HttpResponse,redirect class AuthMiddleware(MiddlewareMixin): """中间件""" def process_request(self, request): # 0.排除那些不需要登录就能访问的页面 # request.path_info # 获取当前用户请求的 URL Interface = ["/tologin","/","/image/code/"] # 不需要登录就可以访问的接口 print(request.path_info) if request.path_info in Interface: return # 1.读取当前访问的用户的 session 信息,如果能读到,说明已登录,就可以继续往后走 # 如果方法中没有返回值,就返回 None,继续往后走 # 如果有返回值 HttpResponse、render、redirect info_dict = request.session.get("info") # 读取 session 信息 print(info_dict) if info_dict: # 如果有 return # 2.没有登录过,跳转到登录页面 return redirect('/')
2、需要去 settings.py 文件中注册中间件
# MIDDLEWARE 中注册新建的中间件 'web.middleware.auth.AuthMiddleware', 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', # 中间件,谁在前面就先执行谁 ]

浙公网安备 33010602011771号