2009-05-28 31 views
11

Tôi đang cố thêm xác thực Vai trò vào Hành động trong Bộ điều khiển trong ứng dụng ASP.NET MVC. Mã này trông giống như sau:Vai trò có sẵn với Xác thực Windows

[Authorize(Roles = "SomeRoleName")] 
public ActionResult Index() 
{ 
    bool inRole = User.IsInRole("Admin"); 

Nếu tôi loại bỏ các thuộc tính Authorize và đặt một breakpoint trên dòng cuối cùng trong đó mẫu mã, có cách nào mà tôi có thể kiểm tra các đối tượng và tìm hiểu những gì vai trò có sẵn ?

ví dụ: Tôi gọi User.IsInRole ("Admin) trong cửa sổ ngay lập tức và nó sẽ cho tôi một giá trị đúng/sai. Làm thế nào tôi có thể truy cập tập hợp các vai trò có sẵn?

+0

Bạn có thể làm rõ câu hỏi của bạn về việc bạn đang tìm kiếm vai trò gán cho người dùng hiện tại hoặc tất cả các vai trò có thể là một người sử dụng có thể thuộc về? –

Trả lời

15

Nếu bạn không cần phải làm điều này programatically, nhưng bạn đang cố gắng để xác định Windows Groups đúng/Vai trò mà cần phải được xác định, bạn có thể sử dụng điều này từ dòng lệnh:

C:\> net group /domain (lists all Roles in the domain) 
C:\> net user <username> /domain (lists info, including roles for a user) 

Nếu không bạn sẽ cần truy vấn phần LDAP của Active Directory hoặc sử dụng một cái gì đó trong DirectoryServices.

Hãy nhìn vào các trang web để truy cập vào Active Directory qua C#:

+1

Chạy 'gpresult/Z' từ dấu nhắc lệnh ... – ErikE

+1

Vâng, liên kết howto đưa tôi đến 'ngày Trung Quốc' ngay bây giờ. –

+0

Trong trường hợp người khác lang thang ở đây. Liên kết cho "Howto: (Hầu hết) Mọi thứ trong Active Directory thông qua C# - Codeproject" là: https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C –

2

Bạn có thể sử dụng các phương pháp khác nhau trên lớp RoleProvider trong Hệ thống . .Web.Security.Roles.Provider

Xem này để biết thêm: Role Provider

1

tôi đoán bạn không sử dụng một nhà cung cấp vai trò ở đây, nhưng rơi trở lại vào các chức năng của WindowsPrincipal tiềm ẩn nơi bản đồ vai trò Dù sao đi nữa, tôi không nghĩ ai có thể làm nhiều hơn việc liệt kê các nhóm cửa sổ có sẵn trên máy đó/trong miền đó. Không chắc chắn nếu điều này có ích, nhưng đó là tất cả những gì tôi có thể nói mà không có một ý tưởng về những gì bạn đang cố gắng làm với danh sách vai trò được cho biết.

7

Thêm phần này vào web.config của bạn dưới system.web:

<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"/> 

Sau đó, bạn có thể sử dụng:

string[] arr = Roles.GetRolesForUser(User.Identity.Name); 

hay:

string[] arr = Roles.GetRolesForUser(); 

enter image description here

+1

cảm ơn, điều này cung cấp cho tất cả các vai trò địa phương và tên miền rất nhanh, ví dụ như nhóm BUILTIN \\ quản trị viên quá –

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