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
|