2011-12-04 27 views
6

Tôi đang cố gắng tìm ra cách chính xác để triển khai và mã hóa các mẫu sau bằng cách sử dụng mẫu desing hoặc giải pháp hướng đối tượng tốt:mẫu thiết kế để triển khai một nhóm quyền cho người dùng

Có một lớp người dùng có thể chứa một bộ giấy phép thay đổi, mỗi loại cho phép anh ta thực hiện hành động khác nhau trên ứng dụng. Ý tưởng là để có thể nói với một đối tượng người dùng nào đó, ví dụ như xóa một đơn đặt hàng, nếu anh ta có bất kỳ giấy phép nào cho phép anh ta làm như vậy, hãy làm điều đó và nếu không, để đưa ra một ngoại lệ.

Nếu ai đó có một nơi để đọc về điều này, nó cũng hữu ích. thanks

Trả lời

0

Nếu một người dùng có thể có nhiều giấy phép, mỗi giấy phép cho phép thực hiện các tác vụ khác nhau, bạn có thể muốn xem trang trí mẫu.

mặc dù nó phụ thuộc rất nhiều vào yêu cầu của bạn.

5

Có sẵn các chức năng được cho phép trong C# /. NET.

Yêu cầu truy cập trên một hàm được đặt qua lớp PrincipalPermissionAttribute hoặc bên trong mã với PrincipalPermission. Để ngăn chặn một phương pháp khỏi bị gọi là trừ khi người dùng hiện nay là một thành viên của vai trò Administrators, thuộc tính sau được sử dụng (ví dụ từ MSDN):

[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")] 
static void CheckAdministrator() 
{ 
    Console.WriteLine("User is an administrator"); 
} 

Cả hai kiểm tra đối với sắc hiện tại của tiểu trình đang gọi. Vì vậy, những gì bạn cần làm là triển khai giao diện IPrincipal để cho phép người dùng của bạn được đặt làm nhận dạng chuỗi. Sau đó, bạn có thể sử dụng tiêu chuẩn .NET PrincipalPermission để kiểm tra bảo mật. Nó hoạt động chính xác như bạn muốn - nếu nhu cầu bảo mật không được đáp ứng, một ngoại lệ được ném ra.

+0

Tôi cũng thích kiểu tiếp cận Nguyên tắc-Trung tâm này hơn nữa, tôi khuyên bạn nên tiến thêm một bước nữa và tạo các đối tượng cấp quyền khai báo và/hoặc tuyệt đối để đóng gói các xác nhận PrinciplePermission. Điều này sẽ giữ cho các chi tiết nguyên tắc không bị rò rỉ vào phần còn lại của codebase. Hãy nhớ rằng bạn không phải mua vào cơ sở hạ tầng CAS lớn hơn để sử dụng mẫu này. Một trong những báo trước mặc dù, mô hình bảo mật WCF là rất khác nhau vì vậy bỏ qua nếu đó là nơi bạn đi. Đây là mẫu của mẫu. http://www.smelser.net/blog/post/2009/03/09/Why-do-I-need-your-Permission.aspx – JoeGeeky

+0

@JoeGeeky có vẻ như đó là những gì tôi đang tìm kiếm, nhưng làm thế nào tôi đặt giấy phép của người dùng? Ngoài ra, những người dùng và nhóm người dùng này không liên quan gì đến người dùng UAC/nhóm người dùng windows? – mbmihura

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