2015-05-11 7 views
5

Sto sviluppando un'applicazione ASP.NET MVC 5 con .NET Framework 4.5.1 e C#.Imposta il nome dei ruoli AD su web.config

Sto usando Windows authentication per consentire ad alcuni utenti di accedere ai miei controller. Questo è il mio web.config di 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> 

E questo è il mio attributo Authorize:

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

voglio aggiungere la stringa @"MyDomain\MyUploadRole" al web.config, ma non so come farlo.

Ho provato questo SO answer, ma non funziona per me. Ho aggiunto questa parte web.config di file:

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

E poi, cambiare questo sul controller:

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

e Internet Explorer chiedere le mie credenziali, ma ottengo la risposta non autorizzata.

Come è possibile impostare il nome del ruolo su web.config?

+0

cosa con qualcosa del genere: DasDas

+0

@DasDas Alcuni controller hanno bisogno di un ruolo e altri no. – VansFannel

+0

Perché quell'altra risposta non ha funzionato per te? – mattytommo

risposta

0

Può essere questo funzionerà per voi:

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

E nel codice si può verificare se l'utente è in un ruolo come questo:

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