web-dev-qa-db-fra.com

La AuthorizationPolicy nommée: «Admin» est introuvable

J'apprends l'authentification/autorisation dans .NET Core MVC.

J'essaie de créer un contrôleur qui n'est accessible que par "Admin", mais j'obtiens l'erreur suivante.

Une exception non gérée s'est produite lors du traitement de la demande.

InvalidOperationException: le AuthorizationPolicy nommé: "Admin" est introuvable.

Voici mon code. Que devrais-je faire?

[HttpGet("~/Test")]
[Authorize("Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
14
HockeyJ

vous pouvez définir la politique de correspondance dans Startup.cs

services.AddAuthorization(options =>
  {

        options.AddPolicy("Admin",
            authBuilder =>
            {
                authBuilder.RequireRole("Administrators");
            });

 });

l'authBuilder dispose d'autres méthodes, vous pouvez exiger des revendications ou des noms d'utilisateur spécifiques ou des règles personnalisées à l'aide d'une autorisation basée sur des stratégies et contrôler les règles à partir d'un emplacement central dans le démarrage https://docs.asp.net/en/latest /security/authorization/policies.html

18
Joe Audette

Conformément à la documentation ici , vous n'avez pas ajouté correctement l'attribut d'autorisation. C'est la bonne façon de procéder.

[HttpGet("~/Test")]
[Authorize(Roles ="Admin")]
public async Task<string> MyMethod()
{
    return await Task<string>.Run(() => "Hello Admin");
}
14
HockeyJ