Có rất nhiều câu hỏi (và thông tin) về việc thiết lập tư cách thành viên asp.net, nhà cung cấp vai trò và những thứ tương tự. Dù bạn có nên sử dụng nền tảng tích hợp được cung cấp bởi microsoft hay vai trò mở rộng các lớp cơ sở và vai trò của riêng bạn.Cách xử lý tốt nhất quyền (không phải vai trò) trong tư cách thành viên asp.net, đặc biệt trong ASP.NET MVC
Tôi đã quyết định gia hạn các nhà cung cấp mặc định và triển khai tư cách thành viên và nhà cung cấp vai trò của riêng mình. Bây giờ câu hỏi của tôi, cụ thể là xung quanh xác thực vai trò.
Theo truyền thống, bạn sẽ tạo vai trò có thể như 'Người quản lý, Quản trị viên, Nhân viên, Người dùng siêu' hoặc bất kỳ thứ gì bạn có. Nhưng bạn nên làm gì với các quyền mà tôi coi là một hạt kiểm soát tốt hơn? Hãy để tôi xây dựng ...
Trong trang web asp.net mvc của tôi, tôi có các lĩnh vực khác nhau như quản trị, quản lý, nhắn tin, báo cáo, v.v. Tôi sẽ phân vai cho mỗi người như 'Quản trị viên', 'Người quản lý', ' Phóng viên 'vv Nếu không có vai trò thích hợp, bạn không thể truy cập vào khu vực đó của trang web. Vì vậy, tôi sẽ khóa toàn bộ bộ điều khiển với điều này ở cấp lớp.
Nhưng bây giờ lấy một khu vực làm ví dụ; nhắn tin và nói rằng tôi muốn có quyền hạn hạt tốt hơn cho CRUD; tạo tin nhắn, xem/đọc tin nhắn, chỉnh sửa tin nhắn, xóa tin nhắn, v.v.
Cuối cùng câu hỏi của tôi. Làm thế nào tốt nhất để thực hiện hạt kiểm soát tốt hơn này? Một cách tiếp cận tôi thấy (không chắc chắn nếu nó là một tốt), là chỉ cần tạo vai trò thành viên asp.net cho tất cả mọi thứ. Vì vậy, tôi có thể có ....
Messenger (vai trò cấp độ rộng), CreateMessage, ReadMessage, EditMessage, DeleteMessage.
Một mặt tôi muốn một số người dùng có thể đọc/xem tin nhắn. Nhưng không nhất thiết phải tạo hoặc xóa chúng. Các hành động điều khiển riêng lẻ có thể áp dụng các vai trò cụ thể.
Bạn có thấy bất kỳ vấn đề nào với phương pháp này không? Bạn có ý kiển nào tốt hơn không?
Solution So Far
tôi đã quyết định để tạo ra sơ đồ của riêng tôi và thực hiện các thành viên tùy chỉnh và các nhà cung cấp vai trò. Lược đồ của tôi bao gồm;
- tài
- UserProfile
- Permission
- PermissionAssignment
- Vai trò
- RoleAssignment
Đi được đi cho một hoặc hai ngày hôm sau nhưng sẽ cập nhật thêm thông tin khi Tôi có cơ hội.
Có thể tiến xa hơn một chút và không chỉ nói "hành động này có được phép không?" nhưng để nói "hành động này có được phép đối với thực thể cụ thể này không?" ví dụ. tình hình David Robbins chỉ ra nơi quản lý A không được phép xóa các tin nhắn được tạo bởi Manager B? –
rằng kịch bản cụ thể có thể được xử lý bởi Hành động nhưng logic thực tế của Ủy quyền và ActionResult sẽ thay đổi một chút, một nhiệm vụ liên quan trước đây cho thấy cách bạn có thể lưu trữ, http: //stackoverflow.com/questions/2872588/asp- net-mvc-authorization-permission-to-use-model-classes/2878159 # 2878159 – JOBG
Cảm ơn Omar, tôi đã làm nhiều hơn một chút về việc này và sẽ cập nhật khi có thêm thông tin về nơi tôi đang ở. Chúc mừng. –