Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk membuat atribut kebenaran tersuai dalam teras ASP.NET menggunakan dasar dan iAuthorizationFilter?

Bagaimana untuk membuat atribut kebenaran tersuai dalam teras ASP.NET menggunakan dasar dan iAuthorizationFilter?

Linda Hamilton
Linda Hamiltonasal
2025-02-01 18:06:14139semak imbas

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

Buat Custom AutrizeAttribute

Asp.net Core

membolehkan anda menentukan keperluan kebenaran untuk operasi atau pengawal. Walaupun versi awal menyediakan kaedah , kaedah ini telah diganti.

AuthorizeAttribute Kaedah Semasa: Dasar AuthorizeCore

Kaedah cadangan untuk mewujudkan atribut yang diberi kuasa yang disesuaikan adalah menggunakan strategi. Dalam fail aplikasi, anda boleh mendaftarkan strategi tersuai dan mengaitkannya dengan keperluan khusus. Contohnya: Kemudian, dalam pengawal anda, anda boleh menggunakan strategi

atribut yang ditentukan:

Startup.cs

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

Walau bagaimanapun, untuk senario yang lebih mudah, [Authorize] antara muka menyediakan kaedah untuk mencapai logik kebenaran yang disesuaikan. Anda boleh menentukan atribut baru mewarisi dan tentukan penapis tersuai:

<code class="language-csharp">[Authorize(Policy = "RequireAge18")]
public class MyController : Controller { }</code>

maka anda boleh menggunakan atribut anda untuk operasi atau pengawal:

ringkasan

IAuthorizationFilter TypeFilterAttribute Mengikut keperluan khusus anda, Core ASP.NET menyediakan dua kaedah untuk membuat atribut kebenaran yang disesuaikan: Strategi dan

antara muka. Pilih yang paling sesuai dengan keperluan aplikasi anda.
<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>

Atas ialah kandungan terperinci Bagaimana untuk membuat atribut kebenaran tersuai dalam teras ASP.NET menggunakan dasar dan iAuthorizationFilter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn