Maison > développement back-end > C++ > Comment implémenter l'autorisation personnalisée dans ASP.NET Core en utilisant les réclamations?

Comment implémenter l'autorisation personnalisée dans ASP.NET Core en utilisant les réclamations?

Mary-Kate Olsen
Libérer: 2025-02-01 18:16:10
original
336 Les gens l'ont consulté

How to Implement Custom Authorization in ASP.NET Core Using Claims?

Utilisez une instruction dans ASP.NET Core pour réaliser des attributs d'autorisation personnalisés

arrière-plan

ASP.NET Core

fournit un moyen pratique de fonctionner en fonction de la déclaration. Cependant, dans la version précédente, vous pouvez réécrire

pour réaliser la logique d'autorisation personnalisée. Cette méthode n'existe plus dans AuthorizeAttribute. bool AuthorizeCore(HttpContextBase httpContext) AuthorizeAttribute La méthode actuelle d'utilisation de la stratégie

ASP.NET Core Team recommande d'utiliser des stratégies pour l'autorisation personnalisée. Ce qui suit est le processus:

Définir la stratégie dans :
  1. Startup.cs

    Ajouter un attribut à votre opération ou contrôleur:
     options.AddPolicy("YourPolicyName", policy => policy.RequireClaim(...));
    Copier après la connexion
  2. [Authorize] en utilisant les attributs d'autorisation personnalisés de l'instruction

     [Authorize(Policy = "YourPolicyName")]
     public IActionResult Action(...)
    Copier après la connexion
    Si la méthode basée sur la stratégie n'est pas applicable, vous pouvez utiliser l'interface
  3. pour créer une personnalité
:

Comment utiliser des exemples: IAuthorizationFilter AuthorizeAttribute

En implémentant la méthode
public class ClaimRequirementAttribute : TypeFilterAttribute
{
    public ClaimRequirementAttribute(string claimType, string claimValue) : base(typeof(ClaimRequirementFilter))
    {
        Arguments = new object[] { new Claim(claimType, claimValue) };
    }
}

public class ClaimRequirementFilter : IAuthorizationFilter
{
    private readonly Claim _claim;

    public ClaimRequirementFilter(Claim claim)
    {
        _claim = claim;
    }

    public void OnAuthorization(AuthorizationFilterContext context)
    {
        bool hasClaim = context.HttpContext.User.Claims.Any(c => c.Type == _claim.Type && c.Value == _claim.Value);
        if (!hasClaim)
        {
            context.Result = new ForbidResult();
        }
    }
}
Copier après la connexion
dans votre filtre, vous pouvez spécifier la logique d'autorisation en fonction de l'instruction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal