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
Libérer: 2025-02-01 18:06:14
original
186 Les gens l'ont consulté

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

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("RequireAge18", policy => policy.RequireClaim(MyClaimTypes.Age, "18"));
    });
}
Copier après la connexion
<替> Méthode alternative: iAutorizationFilter

[Authorize]

Cependant, pour le scénario plus simple, l'interface
[Authorize(Policy = "RequireAge18")]
public class MyController : Controller { }
Copier après la connexion
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

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();
        }
    }
}
Copier après la connexion
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 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