使用 Flask-Login 处理经过身份验证的用户与授权用户

Dealing with authenticated vs. authorized users with Flask-Login

我已经成功制作了一个 Flask-Login 应用程序,可以让人们使用 LDAP 登录。也就是说,我可以使用登录过程和@login_required装饰器来区分两类用户:

  1. 未经身份验证(username/password 在 LDAP 中未被识别为有效组合)
  2. 已验证(用户可以使用给定的 username/password 登录 LDAP)

我现在想要的是:

  1. 未经身份验证(username/password 在 LDAP 中未被识别为有效组合)
  2. 未经授权(username/password 是有效的 LDAP 组合,但用户不是正确 LDAP 组的成员)
  3. 已授​​权(用户的凭据在 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" class 一起使用的 "is_authenticated" 方法,但这似乎真的只能让我到达 #1。有没有Flask类的方法从认证状态转为授权状态?

或者 Flask-Login 的用处是否在身份验证后结束,我需要弄清楚如何推出我自己的 @authorization_required 装饰器?

这个flask-login docs具体说的不是"Handle permissions beyond 'logged in or not.'"

所以是的,您必须推出自己的 @authorization_required 装饰器。