Python 使用Flask登录处理经过身份验证的用户与经过授权的用户

Python 使用Flask登录处理经过身份验证的用户与经过授权的用户,python,authentication,flask,authorization,flask-login,Python,Authentication,Flask,Authorization,Flask Login,我已经成功地制作了一个Flask登录应用程序,可以让人们使用LDAP登录。也就是说,我可以使用登录过程和@login\u所需的装饰器来区分两种类型的用户: 未经验证(用户名/密码在LDAP中未被识别为有效组合) 已验证(用户可以使用给定的用户名/密码登录LDAP) 我现在想要的是: 未经验证(用户名/密码在LDAP中未被识别为有效组合) 未经授权(用户名/密码是有效的LDAP组合,但用户不是正确LDAP组的成员) 已授权(用户的凭据位于LDAP中,并且用户是相应LDAP组的成员) 在伪代码中,我

我已经成功地制作了一个Flask登录应用程序,可以让人们使用LDAP登录。也就是说,我可以使用登录过程和@login\u所需的装饰器来区分两种类型的用户:

  • 未经验证(用户名/密码在LDAP中未被识别为有效组合)
  • 已验证(用户可以使用给定的用户名/密码登录LDAP)
  • 我现在想要的是:

  • 未经验证(用户名/密码在LDAP中未被识别为有效组合)
  • 未经授权(用户名/密码是有效的LDAP组合,但用户不是正确LDAP组的成员)
  • 已授权(用户的凭据位于LDAP中,并且用户是相应LDAP组的成员)
  • 在伪代码中,我希望这样:

    @app.route("/")
    def index():
        return render_template("index.html")
    
    # This is for any authenticated user
    @app.route('/allmembers')
    @login_required
    def allmembers():
        return render_template("allmembers.html")
    
    # This is for only certain LDAP group members
    @app.route('/secret')
    @authorization_required(allowed_groups=["secret", "top-secret"])  # does this exist?
    @login_required
    def secret():
        return render_template("secret.html")
    
    我已经研究了Flask Login“User”类附带的“is#u authenticated”方法,但这似乎只让我想到了#1。是否有一种烧瓶类型的方法从认证状态转到授权状态

    或者Flask登录的有效性在身份验证之后就结束了,我需要弄清楚如何使用我自己的
    @authorization\u required
    decorator?

    特别指出它不“处理“登录或不登录”之外的权限。”


    因此,是的,您必须使用自己的
    @authorization\u required
    decorator.

    确实如此。太糟糕了!是时候学习如何写一个装饰师了。