flask中间件之请求扩展

引言:有这样的一个需求,如果用户未登录,我们要求用户跳转到登陆页,如果用户已登陆,每个页面可以获取用户信息

面对这样的问题,我们可能会想到装饰器,就是给每个页面都加上装饰器,通过装饰器去判断用户是否登陆,这样会很麻烦,于是中间件就出现了,它相当于一个钩子,就是我们可以在请求的前后挂载我们需要的功能。

  • 首先,我们可以声明一个before_request进行钩子挂载

 

from flask import Flask,request,session,redirect,render_template

@app.before_request
def process_request():
    print("所有请求之前都会执行这个函数")
   
    
  • 加入我们的处理逻辑

 

@app.before_request
def process_request():
    if request.path == "/login":
        return None
    
    user = session.get('user_info')
   
    if user:
        return None
   
    return redirect("/login")

总结:中间件就是相当于我们在处理请求的前后加了一个个水管过滤器,我们可以对进入的水进行过滤处理,至于用什么装备过滤,就取决于我们自己。

posted @ 2020-02-25 15:07  梦回丶故里  阅读(114)  评论(0编辑  收藏  举报