flask 的类中间件

转载 最后发布于2019-03-24 20:46:00 阅读数 99  收藏

需求 :

如果登陆了,就可以访问 index 和 home 页面,如果没登录就跳转到 login 登录

要怎么解决呢, session 对, 用 session 除了 Login 函数之外的所有函数里面全校验 session 是否登录了

太麻烦了,现在咱们只有3个函数,如果成百上千个怎么整啊

装饰器,对没错,装饰器是一个很好的方案,但是啊,我现在还是成败上千个函数,我要在每一个函数定义的时候加上@装饰器,还是很麻烦

解决办法:  -->  @app.before_request 在请求(request)进入视图函数之前执行

from flask import Flask,request,redirect,session
app = Flask(__name__) # type:Flask 
app.secret_key = "zc"

@app.before_request # 在请求进来之前执行
def is_login():
  if request.path == "/login": # 判断路径,如果是/login,就pass
    return None
  if not session.get("user"): # 没有获取到 user,证明没登录,就返回login
    return redirect("/login")

@app.route("/login")
def login():
  return "Login"

@app.route("/index")
def index():
  return "Index"
@app.route("/home") def home(): return "Login" app.run("0.0.0.0", 5000)
小贴士 -- 还有一个要提的 @app.before_first_request 它与 @app.before_request 极为相似或者说是一模一样,只不过它只会被执行一次

响应   @app.after_request 在响应(response)返回客户端之前执行 , 结束视图函数之后

@app.after_request
def foot_log(environ):
    if request.path != "/login":
        print("有客人访问了",request.path)
    return environ
现在用的少了

转载于:https://www.cnblogs.com/zhangchen-sx/p/10590250.html

原文地址:https://www.cnblogs.com/fengff/p/12426840.html