Maison >développement back-end >C++ >Comment créer des attributs d'autorisation personnalisés dans ASP.NET Core à l'aide de politiques et iAuthorizationFilter?

Comment créer des attributs d'autorisation personnalisés dans ASP.NET Core à l'aide de politiques et iAuthorizationFilter?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-01 18:06:14188parcourir

How to Create Custom Authorization Attributes in ASP.NET Core Using Policies and IAuthorizationFilter?

Créez une autorisation personnalisée

ASP.NET CORE

vous permet de spécifier les exigences d'autorisation pour l'opération ou le contrôleur. Bien que la première version fournit la méthode , cette méthode a été remplacée.

AuthorizeAttribute Méthode actuelle: Politiques AuthorizeCore

La méthode de recommandation pour créer un attribut autorisé personnalisé est d'utiliser des stratégies. Dans le fichier de la demande, vous pouvez enregistrer une stratégie personnalisée et les associer à des exigences spécifiques. Par exemple:

Ensuite, dans votre contrôleur, vous pouvez utiliser la stratégie spécifiée de l'attribut

: Startup.cs

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("RequireAge18", policy => policy.RequireClaim(MyClaimTypes.Age, "18"));
    });
}</code>
Méthode alternative: iAutorizationFilter

[Authorize]

Cependant, pour le scénario plus simple, l'interface
<code class="language-csharp">[Authorize(Policy = "RequireAge18")]
public class MyController : Controller { }</code>
fournit une méthode pour réaliser une logique d'autorisation personnalisée. Vous pouvez définir les nouveaux attributs de hériter et spécifier le filtre personnalisé:

Ensuite, vous pouvez utiliser vos attributs pour le fonctionnement ou le contrôleur:

IAuthorizationFilter Résumé TypeFilterAttribute

<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
{
    readonly Claim _claim;

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

    public void OnAuthorization(AuthorizationFilterContext context)
    {
        var hasClaim = context.HttpContext.User.Claims.Any(c => c.Type == _claim.Type && c.Value == _claim.Value);
        if (!hasClaim)
        {
            context.Result = new ForbidResult();
        }
    }
}</code>
Selon vos besoins spécifiques, ASP.NET Core fournit deux méthodes pour créer des attributs d'autorisation personnalisés: stratégie et

interface. Choisissez le plus conformément aux exigences de votre application.

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