2009-05-28 27 views
11

Próbuję dodać uwierzytelnianie ról do działania w kontroler w aplikacji ASP.NET MVC. Kod wygląda mniej więcej tak:Role dostępne z uwierzytelnianiem Windows

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

Jeśli usunąć atrybut autoryzować i umieścić punkt przerwania na ostatniej linii w tym próbki kodu, czy jest jakiś sposób, że mogę kontrolować obiekty i dowiedzieć się, jakie są dostępne role ?

np. Wywołuję User.IsInRole ("Admin") w oknie Natychmiastowym i da mi wartość true/false .Jak mogę uzyskać dostęp do kolekcji dostępnych ról?

+0

można wyjaśnić swoje pytanie, czy szukasz ról przypisanych do bieżącego użytkownika lub wszystkich możliwych ról, które użytkownik może należeć do? –

Odpowiedz

15

Jeśli nie trzeba to zrobić programowo, ale staramy się ustalić odpowiednie grupy Windows/Role, które muszą być określone, można korzystać z wiersza poleceń:

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

Inaczej będziesz musiał wysłać zapytanie do części LDAP Active Directory lub użyć czegoś w DirectoryServices.

Spójrz na tych stronach internetowych, aby uzyskać dostęp do usługi Active Directory za pośrednictwem C#:

+1

Uruchom polecenie 'gpresult/Z' z wiersza poleceń ... – ErikE

+1

Cóż, odsyłacz do tego tematu przenosi mnie teraz do" chińskich dat ". –

+0

Na wypadek, gdyby ktoś tu wszedł. Łącze do "Howto: (Almost) Everything In Active Directory via C# - Codeproject" to: https://www.codeproject.com/Articles/18102/Howto-Almost-Everything-In-Active-Directory-via-C –

2

Możesz użyć różnych metod w klasie RoleProvider w Systemie . .Web.Security.Roles.Provider

Zobacz to na więcej: Role Provider

1

Zgaduję, że nie są tu za pomocą dostawcy rolę, ale spada z powrotem na leżącej funkcjonalności WindowsPrincipal gdzie odwzorować role do grup użytkowników. Tak czy inaczej, nie sądzę, że można zrobić więcej niż wyliczyć grupy okien dostępne na tym komputerze/w tej domenie .Nie wiem, czy to pomaga, ale to wszystko, co mogę powiedzieć bez pomysł, co próbujesz zrobić ze wspomnianą listą ról.

7

Dodaj to do Twojej web.config pod system.Web:

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

Następnie można użyć:

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

czyli

string[] arr = Roles.GetRolesForUser(); 

enter image description here

+1

dzięki, to bardzo szybko nadaje wszystkie role lokalne i domeny, na przykład BUILTIN \\ Administrators group –

Powiązane problemy