django_project_demo/app/middleware/auth.py

33 lines
1.2 KiB
Python
Raw Normal View History

2024-08-24 11:25:23 +08:00
"""
这是登录鉴权的中间件程序其实就是一个类
process_request是进入中间件 process_response是离开中间件程序
用于判断是否登录系统request.session.get('info')session变量在views/account.py中定义
"""
# 导入模块
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render, redirect
class AuthMiddleWare(MiddlewareMixin):
""" 中间件 """
def process_request(self, request):
# print('M1.process_request进来了')
# (重要)排除不需要进行登录验证的页面,例如登录界面,不然回造成死循环
# request.path_info 当前页面的URL例如'/login/'
if request.path_info in ['/login/', '/image/code/']:
return # 返回None
# 判断是否已登录返回None则继续向下一个中间件执行最终到达视图函数
info = request.session.get('info')
# print(info)
if info:
return # 返回None
# 没有登录,则返回登录界面
return redirect('/login/')
def process_response(self, request, response):
# print('M1.process_request,走了')
return response