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
    现在用的少了
  • 相关阅读:
    content
    Jexus~mono中使用StackExchange.redis的问题
    Jexus~docker与它产生了暖味
    LindAgile~缓存拦截器支持类的虚方法了
    LindAgile~大叔新宠~一个无所不能框架
    docker~yml里使用现有网络
    C语言头文件组织
    Hyperion Essbase BusinessRule 函数学习--2
    tomcat使用说明
    [置顶] SSO单点登录系列6:cas单点登录防止登出退出后刷新后退ticket失效报500错
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10590250.html
Copyright © 2011-2022 走看看