36

Come forzare/impostare l'autorizzazione globale per tutte le azioni in MVC Core?MVC Core Come forzare/impostare l'autorizzazione globale per tutte le azioni?

so come registrare i filtri globali - ad esempio ho:

Setup.cs 

services.AddMvc(options => 
{ 
    options.Filters.Add(new RequireHttpsAttribute()); 
}); 

e questo funziona bene, ma non posso aggiungere lo stesso per autorizzare:

options.Filters.Add(new AuthorizeAttribute());

Ho errore:

Cannot convert from 'Microsoft.AspNet.Authorization.AuthorizeAttribute()' to 'System.Type'

(Metodo .Add() bisogno IFilterMetadata tipo)


lo so - da domande simili - che questo funziona su MVC4-5 ... Quindi, qualcosa deve cambiare su MVC Nucleo ...

Qualcuno avere qualche idea?

risposta

68
services.AddMvc(config => 
{ 
    var policy = new AuthorizationPolicyBuilder() 
        .RequireAuthenticatedUser() 
        .Build(); 
    config.Filters.Add(new AuthorizeFilter(policy)); 
}); 
+0

Grazie per la risposta :) –

+0

permettetemi di chiedere - a suo parere - è che è buona pratica? Devo eseguire WebApp per uso interno e ho bisogno di essere sicuro che non sia accessibile al pubblico. –

+0

Forse un'altra domanda: questa soluzione (globale) può avere un impatto negativo ad esempio sulle prestazioni (rispetto all'utilizzo di AuthorizeAttribute per ogni classe)? –

Problemi correlati