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