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

时间:2016-03-30 21:41:25

标签: python authentication flask authorization flask-login

我设法创建了一个Flask-Login应用程序,可以使用LDAP记录人员。也就是说,我可以使用登录过程和@login_required装饰器来区分两种类型的用户:

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

    1. 未经身份验证(用户名/密码未被识别为LDAP中的有效组合)
    2. 未经授权(用户名/密码是有效的LDAP组合,但用户不是正确的LDAP组的成员)
    3. 授权(用户的凭据在LDAP中,用户是相应LDAP组的成员)
    4. 在伪代码中,我喜欢这样:

      @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")
      

      我看过" is_authenticated"与Flask-Login" User"一起使用的方法上课,但这似乎只能让我到#1。是否有Flask类型的方法从认证状态进入授权状态?

      或者Flask-Login的有用性在验证后结束了,我需要弄清楚如何滚动自己的@authorization_required装饰器?

1 个答案:

答案 0 :(得分:0)

flask-login docs具体说它不会"处理超出登录的权限。'"

所以是的,你必须推出自己的Get-ChildItem $rootPath -Recurse | select -ExpandProperty FullName | foreach{ $_.Trim()} | {...means of splitting file here...} 装饰者。