36

Wie erzwinge/setze globale Autorisierung für alle Aktionen in MVC Core?MVC Core Wie erzwinge/setze globale Autorisierung für alle Aktionen?

Ich weiß, wie globale Filter registrieren - zum Beispiel ich habe:

Setup.cs 

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

und das funktioniert gut, aber ich kann das gleiche für Autorisieren nicht hinzufügen:

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

Ich habe einen Fehler:

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

(Methode .Add()IFilterMetadata Typ benötigt)


Ich weiß - aus ähnlichen Fragen -, dass dies auf MVC4-5 funktioniert ... geändert Also muss etwas auf MVC-Core ...

Jemand hat irgendeine Idee?

Antwort

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

Vielen Dank für Antwort :) –

+0

mich fragen lassen - Ihrer Meinung nach - es ist ist eine gute Übung? Ich muss WebApp für den internen Gebrauch tun, und ich muss sicher sein, dass es für die Öffentlichkeit nicht zugänglich ist. –

+0

Vielleicht noch eine Frage - hat diese (globale) Lösung negative Auswirkungen auf die Performance (im Vergleich zur Verwendung von AuthorizeAttribute für jede Klasse)? –