7

Sto costruendo un sito di tipo Intranet con ASP.NET 5 che utilizza l'autenticazione di Windows. Ho l'autenticazione funzionante, ma non voglio che tutti nel dominio abbiano accesso al sito intranet. Non posso utilizzare i ruoli di dominio, quindi ho impostato i miei ruoli personalizzati nel mio SQL Server. Ho una tabella che associa il nome utente del dominio ai ruoli. Voglio limitare l'accesso al sito intranet solo agli utenti con un ruolo definito nella tabella dei ruoli di SQL Server. Come impostare i ruoli personalizzati per l'autenticazione di Windows in ASP.NET 5? Grazie!ASP.NET 5 Ruoli personalizzati per l'autenticazione di Windows

+0

hai guardato SqlRoleProvider? –

+0

Non credo che SqlRoleProvider sia disponibile in ASP.NET 5. Almeno non ho trovato alcun riferimento ad esso. – Jeremy

risposta

8

Non si impostano ruoli personalizzati. È necessario creare un attributo di autorizzazione personalizzato, come descritto here.

UPDATE:

Sì, è possibile utilizzare l'attributo autorizzare personalizzato a livello globale. Diciamo che qui è la vostra abitudine attributo autorizzare:

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var username = httpContext.User.Identity.Name; 

     // Check to see if user has a role in the database 
     var isAuthorized = db.User.Find(username).Any(); 

     return isAuthorized; 
    } 
} 

Quindi, è possibile utilizzare al livello d'azione o il livello di controllo in questo modo:

[MyAuthorize] 
public ActionResult Index() 
{ 
} 

In alternativa, è possibile registrare come un filtro globale in la tua classe FilterConfig nella cartella App_Start, come questa:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new MyAuthorizeAttribute()); 
    } 
} 
+0

Un attributo di autorizzazione personalizzato può essere eseguito automaticamente su ogni richiesta? Ho pensato che si trattava solo di aggiungere un attributo al di sopra di controller specifici come [MyCustomAttribute] per limitare gli utenti su uno o più controller specifici. – Jeremy

Problemi correlati