【问题标题】:How to protect Flask-RESTful with Flask-USER management?如何使用 Flask-USER 管理保护 Flask-RESTful?
【发布时间】:2018-01-07 06:09:58
【问题描述】:

我在网页端使用 Flask-User 布置和保护了一组用户角色。现在我想允许他们对我的 API 进行 REST 调用,这些调用将使用@roles_required 进行划分以过滤请求。如何进行 REST 登录并将令牌\凭据传递给 Flask-USER 以使 @roles_required 工作?

【问题讨论】:

    标签: python rest authentication flask roles


    【解决方案1】:

    你必须查看Dillon Dixan 的仓库,他在那里提出了一个非常漂亮的例子,它可以帮助你实现你的查询。下面是示例代码:

    from flask import Flask
    from flask_basic_roles import BasicRoleAuth
    app = Flask(__name__)
    auth = BasicRoleAuth()
    
    # Let's add some users.
    auth.add_user(user='bob', password='secret123', roles='producer')
    auth.add_user(user='alice', password='drowssap', roles=('producer','consumer'))
    auth.add_user(user='bill', password='54321')
    auth.add_user(user='steve', password='12345', roles='admin')
    
    # Only producers and admins can post, while consumers can only get.
    # Admins can also perform all other verbs.
    @app.route("/task")
    @auth.require(roles={
        'POST': 'producer',
        'GET': 'consumer',
        'DELETE,POST,PATCH,PUT,GET': 'admin'
    })
    def tasks_endpoint(methods=(...)):
        return "Here tasks get produced and consumed!"
    
    # We can secure by user too. Steve can use any verb on this
    # endpoint and everyone else is denied access.
    @app.route("/task_status")
    @auth.require(users='steve')
    def task_status_endpoint(methods=(...)):
        return "Here are the task statuses!"
    
    # Alice, Bill and users with an 'admin' role can access this, while everyone
    # else is denied on all verbs.
    @app.route("/task_failures")
    @auth.require(users=('alice', 'bill'), roles='admin')
    def task_failures(methods=(...)):
        return "Here are the task failures!"
    
    # Everyone including unauthenticated users can view task results.
    @app.route("/task_results")
    def task_results(methods=(...)):
        return "Here are the task results!"
    
    if __name__ == "__main__":
        app.run() 
    

    您需要做的就是使用pip 安装库flask_basic_roles。 休息一下,您可以查看示例,肯定会对您有所帮助。

    另外,您还可以访问查看:https://github.com/raddevon/flask-permissions
    请从这里阅读烧瓶许可:https://pythonhosted.org/Flask-Security/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-25
      • 2014-09-09
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多