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?
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
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