33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
"""
|
||
这是登录鉴权的中间件程序,其实就是一个类
|
||
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
|