webentwicklung-frage-antwort-db.com.de

MVC Core Wie wird die globale Autorisierung für alle Aktionen erzwungen / festgelegt?

So erzwingen/setzen Sie die globale Autorisierung für alle Aktionen in MVC Core?

Ich kann globale Filter registrieren - zum Beispiel habe ich:

Setup.cs

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

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

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

Ich habe fehler:

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

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


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

Jemand hat eine Idee?

53
Lukasz Makowej
services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});
91
blowdart

Fügen Sie Ihren ConfigureServices in StartUp.cs Folgendes hinzu. Dies dient der Token-Validierung und erzwingt, dass alle Anrufe mit Token verifiziert werden.

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

services.AddMvc(options =>
        {
            var policy = new AuthorizationPolicyBuilder()
                .RequireAuthenticatedUser()
                .Build();
            options.Filters.Add(new AuthorizeFilter(policy));
        })`

Fügen Sie dies zur Methode Configure in StartUp.cs hinzu.

app.UseAuthentication();

Hinweis: Verwenden Sie [AllowAnonymous] für diejenigen, bei denen Sie es nicht benötigen

1
Rohan Shenoy