2013-03-26 21 views
5

mogę rozpędzają się standardem ASP.NET MVC 4 projektu intranet i dekorować kontrolera lub metod rzeczy jak:Jak używać uwierzytelniania systemu Windows w rolach z funkcją Hot Towel?

[System.Web.Mvc.Authorize(Roles = "MyApp Users")] 

Ja testowałem go i będzie działać doskonale (od mojego konta domeny jest członkiem "Użytkownicy MyApp" w Active Directory)

Jednak mój problem/pytanie brzmi: jak uzyskać ten sam typ zachowania dla aplikacji "Hot Towel"? Próbuję dekorować kontroler bryzy, kontroler HotTowel lub dowolną metodę z tym samym atrybutem i nigdy nie mogę uwierzytelnić ... co daje?

Twoja pomoc jest bardzo doceniana.

+0

Czy masz konfigurację dostawcy roli? Sprawdź stopień IP i sprawdź, czy jesteś także zalogowany. –

+0

Używam domyślnego dostawcy roli dla asp.net mvc ... nic niestandardowego. I tak, jeśli sprawdzę IPrincipal, pokaże mi, że jestem zalogowany. –

Odpowiedz

5

W końcu to rozgryzłem. Mam nadzieję, że przyda się to innym.

Najpierw trzeba ustawić WindowsProvider jako roleManager tak:

<roleManager defaultProvider="WindowsProvider" 
    enabled="true" 
    cacheRolesInCookie="false"> 
    <providers> 
    <add 
     name="WindowsProvider" 
     type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 

Wtedy będziesz w stanie sprawdzić role dla użytkownika [użyciem Roles.IsUserInRole()], a dokładniej na to pytanie użyj atrybutu autoryzacji. Jedyną rzeczą jest to, że trzeba będzie zawierać domenę w atrybucie zezwolić tak:

[System.Web.Mvc.Authorize(Roles = "YourDomain\\MyApp Users")] 

A teraz wszystko działa, jak można by oczekiwać.