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?
6
A
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
- 1. Làm thế nào để bảo vệ dll?
- 2. Làm thế nào để bạn bảo vệ trang web quản trị django?
- 3. Làm thế nào để mở khóa một PDF "được bảo vệ" (đọc được bảo vệ) bằng Python?
- 4. Làm cách nào để xử lý bảo vệ CSRF bằng dịch vụ web Spring RESTful?
- 5. Làm thế nào để bảo vệ .NET DLL's
- 6. Làm thế nào để bảo vệ "chủ" trong github?
- 7. Làm thế nào để bảo vệ đầu ra kill
- 8. Cách bảo vệ bảng quản trị bình bằng bình bảo mật
- 9. ghi đè nội bộ được bảo vệ bằng bảo vệ!
- 10. Bảo vệ JWT bằng X509Certificate2 (JwtSecurityTokenHandler)
- 11. Trình quản lý trang web Selenium - xác minh hộp văn bản được bảo vệ chống ghi?
- 12. Làm thế nào để giả lập các thành viên ảo được bảo vệ bằng Rhino.Mocks?
- 13. Làm thế nào để bảo vệ quyền truy cập tệp bằng lệnh "install directory" của cmake?
- 14. Làm cách nào để quản lý DialogFragment bằng RxJava?
- 15. Mật khẩu bảo vệ PDF bằng Ghostscript
- 16. Đơn vị MMU (Bộ quản lý bộ nhớ) trong bộ xử lý bảo vệ các phân đoạn bộ nhớ
- 17. Làm thế nào để chúng tôi ngừng quản lý trình quản lý web?
- 18. Làm thế nào để bảo vệ toàn bộ nhánh trong cây nội dung Sitecore?
- 19. Làm thế nào để quản lý các testbenches lớn VHDL
- 20. Làm thế nào để đối phó với quản lý inept
- 21. Làm thế nào để quản lý getdate() với Entity Framework
- 22. Làm thế nào để quản lý biến PATH trong Windows?
- 23. Làm cách nào để bảo vệ Flash/Flex SWF của tôi bằng mã?
- 24. phương pháp được bảo vệ bằng mocking
- 25. Tấn công DDOS: bảo vệ bằng Thread.Sleep()?
- 26. Bảo vệ bằng mật khẩu Tệp Elmah.axd
- 27. bảo mật và quản lý phiên làm việc của áo
- 28. Làm thế nào để sử dụng StrongNameKeyPair với một mật khẩu bảo vệ keyfile (pfx)?
- 29. Làm thế nào để tạo một lớp được bảo vệ cho kế thừa?
- 30. Sự khác nhau giữa bảo vệ và bảo vệ [này]