首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Flask用户管理保护Flask-RESTful?

如何通过Flask用户管理保护Flask-RESTful?
EN

Stack Overflow用户
提问于 2017-07-31 23:26:10
回答 1查看 2.9K关注 0票数 7

我有一个用户角色设置和保护在网页侧与Flask-用户。现在,我希望允许他们对我的应用程序接口进行REST调用,这将使用@roles_required来过滤请求。如何进行REST登录并将token\credentials传递给Flask-USER以使@roles_required正常工作?

EN

回答 1

Stack Overflow用户

发布于 2017-08-03 15:35:20

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

代码语言:javascript
复制
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。Rest您可以查看示例,它肯定会对您有所帮助。

此外,您还可以访问并查看:https://github.com/raddevon/flask-permissions

请阅读此处的flask权限:https://pythonhosted.org/Flask-Security/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45419802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档