Heim >Backend-Entwicklung >C++ >Wie erstelle ich benutzerdefinierte Autorisierungsattribute im ASP.NET -Kern mit Richtlinien und iautorisierungsfilter?

Wie erstelle ich benutzerdefinierte Autorisierungsattribute im ASP.NET -Kern mit Richtlinien und iautorisierungsfilter?

Linda Hamilton
Linda HamiltonOriginal
2025-02-01 18:06:14188Durchsuche

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

Custom AuthorizeAttribute erstellen

Mit ASP.NET CORE

können Sie die Autorisierungsanforderungen für den Betrieb oder den Controller angeben. Obwohl die frühe Version die Methode enthält, wurde diese Methode ersetzt.

AuthorizeAttribute Strommethode: Richtlinien AuthorizeCore

Die Empfehlungsmethode zum Erstellen eines maßgeschneiderten autorisierten Attributs besteht darin, Strategien zu verwenden. In der Datei der Anwendung können Sie eine benutzerdefinierte Strategie registrieren und mit spezifischen Anforderungen assoziieren. Zum Beispiel:

In Ihrem Controller können Sie dann das angegebene Strategie

verwenden: Startup.cs

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

[Authorize]

Für das einfachere Szenario bietet
<code class="language-csharp">[Authorize(Policy = "RequireAge18")]
public class MyController : Controller { }</code>
Schnittstelle eine Methode zur Erzielung einer kundenspezifischen Autorisierungslogik. Sie können die neuen Attribute von erben und den benutzerdefinierten Filter angeben:

Dann können Sie Ihre Attribute für den Betrieb oder den Controller verwenden:

IAuthorizationFilter Zusammenfassung 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>
entsprechend Ihren spezifischen Anforderungen bietet ASP.NET Core zwei Methoden zum Erstellen von maßgeschneiderten Autorisierungsattributen: Strategie und

Schnittstelle. Wählen Sie die am besten im Einklang mit Ihren Anwendungsanforderungen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich benutzerdefinierte Autorisierungsattribute im ASP.NET -Kern mit Richtlinien und iautorisierungsfilter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn