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
Lepaskan: 2025-02-01 18:06:14
asal
224 orang telah melayarinya

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
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthorization(options =>
    {
        options.AddPolicy("RequireAge18", policy => policy.RequireClaim(MyClaimTypes.Age, "18"));
    });
}
Salin selepas log masuk

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:

[Authorize(Policy = "RequireAge18")]
public class MyController : Controller { }
Salin selepas log masuk

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.
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();
        }
    }
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan