2017-07-31 12 views
6

Tôi có một bộ Vai trò người dùng được đặt ra và được bảo vệ trên trang web với Người dùng bình. Bây giờ tôi muốn cho phép họ thực hiện các cuộc gọi REST tới API của tôi, số này sẽ được chia bằng cách sử dụng @roles_required để lọc các yêu cầu. Làm cách nào để đăng nhập REST và chuyển mã thông báo \ cho Flask-USER cho @roles_required để hoạt động?Làm thế nào để bảo vệ Flask-RESTful bằng quản lý Flask-USER?

Trả lời

3

Bạn phải kiểm tra kho lưu trữ Dillon Dixan, nơi ông đã đề xuất một ví dụ rất đẹp, có thể giúp bạn đạt được truy vấn của mình. Đây là đoạn mã mẫu:

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() 

Tất cả bạn cần làm là cài đặt các thư viện flask_basic_roles sử dụng pip. Phần còn lại bạn có thể kiểm tra trong ví dụ và chắc chắn sẽ giúp bạn.

Ngoài ra, bạn cũng có thể truy cập và xem: https://github.com/raddevon/flask-permissions
Vui lòng đọc sự cho phép bình từ đây: https://pythonhosted.org/Flask-Security/.

Các vấn đề liên quan