web-dev-qa-db-fra.com

MVC Core Comment forcer / définir une autorisation globale pour toutes les actions?

Comment forcer/définir l'autorisation globale pour toutes les actions dans MVC Core?

Je sais comment enregistrer des filtres globaux - par exemple, j'ai:

Setup.cs

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

et cela fonctionne bien, mais je ne peux pas ajouter la même chose pour Autoriser:

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

J'ai une erreur:

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

(La méthode .Add() nécessite IFilterMetadata type)


Je sais - à partir de questions similaires - que cela fonctionne sur MVC4-5 ... Donc quelque chose doit changer sur MVC Core ...

Quelqu'un a une idée?

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

Ajoutez ce qui suit à vos ConfigureServices dans StartUp.cs. C'est pour la validation du jeton et forcer tous les appels à vérifier avec le jeton.

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));
        })`

Ajoutez ceci à la méthode Configure dans StartUp.cs.

app.UseAuthentication();

Remarque: utilisez [AllowAnonymous] pour ceux où vous n'en avez pas besoin

1
Rohan Shenoy