Django中间件(强制登录)

中间件(Middleware)用于在http请求到达 视图函数之前 和 视图函数return之后 ,django会根据自己的规则在
合适的时机执行中间件中相应的方法。
常用作view中冗余功能的抽取,如每个页面(或某些页面)在访问前强制登录。

强制登录实例

  1. 定义中间件(可以新建一个包)
    中间件中常用的两个过程:process_request , process_response
class MyMiddleAware2(MiddlewareMixin):
    #如果验证成功,则什么一个不用做,否则返回HttpResponse即可响应请求(中断)
    def process_request(self,request):#强制登录判断
        if "login" not in request.path:#路径中如果没有"login"
            print("登录验证")
            session = request.session #获取session
            if session.get("login"): #判断是否有登录的标记
                print("已登录")
            else:
                print("未登录")
                return render(request,"login.html") #未登录则,跳转登录页面
        else:
            print("正在登录") #如果路径中"login"则是登录动作本身
    def process_response(self,request,response):
        print("response:",request,response)
        return response #持续返回响应

  1. 激活中间件(导入第一步中中间件类的路径)
    每当有请求发生时,所有中间件都会执行自己的生命周期。
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    ....
    'middleware115.middlewares.MyMiddleware2',# 注册自定义中间件,尽量放在最后注册
]

你可能感兴趣的:(Django中间件(强制登录))