zoukankan      html  css  js  c++  java
  • flask 的类中间件

    需求 :

    如果登陆了,就可以访问 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
    现在用的少了
  • 相关阅读:
    JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?
    Vue报错 [Vue warn]: Cannot find element
    一个android样本的过保护
    cve-2015-1635漏洞分析
    一个linux的样本分析
    ios透明代理抓包
    各浏览器抗uaf机制
    面试知识点总结之Nginx
    面试知识点总结之redis
    面试知识点总结之I/O流IO/BIO/NIO/AIO区别
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10590250.html
Copyright © 2011-2022 走看看