如何使用 Flask-USER 管理保护 Flask-RESTful?

Posted

技术标签:

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

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

【问题讨论】:

【参考方案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/。

【讨论】:

以上是关于如何使用 Flask-USER 管理保护 Flask-RESTful?的主要内容,如果未能解决你的问题,请参考以下文章

资产监测设备中HCL190FLAS擦写问题分析——HCL190

如何使用烧瓶安全保护烧瓶管理面板

环境监测设备中HCL190FLAS擦写问题定位——APP程序区

无法将其他flas动画片段访问到动作脚本3

如何通过快速路由器使用 Passport 的 connect-ensure-login 保护管理部分?

部署flas到服务器:No module named flask