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
Mary-Kate Olsenoriginal
2025-02-01 18:16:10289parcourir

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:
    <code class="language-csharp"> options.AddPolicy("YourPolicyName", policy => policy.RequireClaim(...));</code>
  2. [Authorize] en utilisant les attributs d'autorisation personnalisés de l'instruction

    <code class="language-csharp"> [Authorize(Policy = "YourPolicyName")]
     public IActionResult Action(...)</code>
    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
<code class="language-csharp">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();
        }
    }
}</code>
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:
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