Chúng tôi đã phát triển mã về cơ bản trả về dữ liệu cho quyền của người dùng trên một thực thể. Ví dụ, một thực thể có thể là một trong những cách sau:Loại dữ liệu nào để sử dụng để lưu trữ quyền của người dùng
-Company
-Contact
-Project
-Issue etc...
Sau đó chúng ta có thể gán các chính sách (và một người có thể nhận được nhiều chính sách) cho phép người dùng thực hiện một hành động:
-Create
-Edit
-Delete
-Export
Vì vậy, về cơ bản, một chính sách có thể nói rằng người dùng A có quyền tạo công ty, nhưng một chính sách khác mà cùng một người dùng này đã nói rằng anh ta không có quyền tạo công ty. Trong trường hợp này, chúng tôi có các quyền cho phép trước các quyền không cho phép. Trong ví dụ này, anh/cô ấy sẽ được phép tạo một công ty.
Vì vậy, về cơ bản bạn kết thúc với dữ liệu như vậy:
Policy1 Company Create Yes
Policy1 Company Edit Yes
Policy1 Company Delete No
Policy2 Company Create No
Policy2 Company Edit Yes
Policy2 Company Delete No
Tôi có một câu hỏi mà chúng tôi sử dụng để quay trở lại sự cho phép của người dùng này dựa trên các quy tắc chúng tôi đã thảo luận là gì.
Trong trường hợp này chạy truy vấn kết quả sẽ là:
Company create yes
Company edit yes
Company delete no
ứng dụng của chúng tôi không chỉ là một chút yes/no cho dù họ có thể thực hiện hành động hay không. Chúng tôi chỉ có/không/chỉ chủ sở hữu (đối với hồ sơ chỉ nên được chủ sở hữu chỉnh sửa/xóa. Truy vấn của chúng tôi rất tuyệt và đang trả lại dữ liệu chính xác của chúng tôi. về cơ bản nói:
với một thực thể (công ty) đưa ra một hành động (tạo) giá trị là những gì cơ bản vào cuối ngày tôi muốn xây dựng một ma trận mà trông như thế này:.
Create Edit Delete
Company Yes Owner Only Yes
Contact No No No
Project Yes Yes Owner Only
các các hàng trên cột đầu tiên đại diện cho thực thể, các cột sau đó đại diện cho các hành động (tạo, chỉnh sửa, xóa) Kết hợp của chỉ mục 2 cho ví dụ: [Company][Create] = Yes
sẽ cung cấp cho bạn quyền của hành động dựa trên pháp nhân.
Vì vậy, kiểu dữ liệu nào phù hợp với mô hình này, nơi tôi có thể thực hiện một số chỉ mục như: [Contact][Edit]=No
. Chúng tôi cũng phải phiên đối tượng này/đưa ra một cách (có thể động) để có được kết quả dựa trên một thực thể và hành động.
Tôi nghĩ rằng phiên sẽ tốt để chúng tôi có thể kiểm tra các quyền một lần và chỉ một lần cho đến khi người dùng đăng xuất.