2015-05-11 10 views
5

Zajmuję się tworzeniem aplikacji ASP.NET MVC 5 z .NET Framework 4.5.1 i C#.Ustaw nazwę ról AD na web.config

Używam Windows authentication, aby umożliwić niektórym użytkownikom dostęp do kontrolerów. To jest mój web.config file:

<system.web> 
    <compilation debug="true" targetFramework="4.5.1" /> 
    <httpRuntime targetFramework="4.5.1" /> 
    <authentication mode="Windows" /> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
    <roleManager enabled="true" defaultProvider="WindowsProvider"> 
    <providers> 
     <clear /> 
     <add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> 
    </providers> 
</roleManager> 
</system.web> 

A to moja Authorize atrybut:

[Authorize(Roles = @"MyDomain\MyUploadRole")] 
public class UploadController : Controller 
{ 
    // ... 
} 

chcę dodać ciąg @"MyDomain\MyUploadRole" do web.config ale nie wiem jak to zrobić.

Przetestowałem to SO answer, ale to nie działa dla mnie. Dodałem tę część do web.config pliku:

<roles> 
    <add key="Role1" value="MyDomain\MyUploadRole" /> 
    <add key="Role2" value="MyDomain\Another role" /> 
</roles> 

A potem zmienić na regulatorze:

[Authorize(Roles = @"Role1")] 
public class UploadController : Controller 
{ 
    // ... 
} 

i Internet Explorer poprosić moich mandatów, ale pojawia nieautoryzowanego odpowiedzi.

Jak ustawić nazwę roli na web.config?

+0

Siema z coś w tym stylu: DasDas

+0

@DasDas Niektóre kontrolery potrzebują pewnej roli, a niektóre z nich nie. – VansFannel

+0

Dlaczego ta druga odpowiedź nie zadziałała? – mattytommo

Odpowiedz

0

Może być to będzie pracować dla Ciebie:

<configuration>  
<system.web> 
    <authentication mode="Windows"/> 
    <authorization> 
    <allow roles="MyDomain\MyUploadRole"/> 
    <deny users="?"/> 
    </authorization> 
    <identity impersonate="true"/> 
</system.web> 

I w kodzie można sprawdzić, czy użytkownik jest w roli jak ten:

HttpContext.Current.User.IsInRole("MyDomain\MyUploadRole")