Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk melaksanakan kebenaran tersuai di Core ASP.NET menggunakan tuntutan?

Bagaimana untuk melaksanakan kebenaran tersuai di Core ASP.NET menggunakan tuntutan?

Mary-Kate Olsen
Lepaskan: 2025-02-01 18:16:10
asal
336 orang telah melayarinya

How to Implement Custom Authorization in ASP.NET Core Using Claims?

Gunakan pernyataan dalam teras ASP.NET untuk mencapai atribut kebenaran yang disesuaikan

latar belakang

Asp.net Core

menyediakan cara yang mudah untuk beroperasi berdasarkan perisytiharan. Walau bagaimanapun, dalam versi terdahulu, anda boleh menulis semula

untuk mencapai logik kebenaran yang disesuaikan. Kaedah ini tidak lagi wujud dalam AuthorizeAttribute. bool AuthorizeCore(HttpContextBase httpContext) AuthorizeAttribute kaedah semasa menggunakan strategi

pasukan teras ASP.NET mengesyorkan menggunakan strategi untuk kebenaran tersuai. Berikut adalah proses:

Define Strategy in :
  1. Startup.cs

    tambah atribut ke operasi atau pengawal anda:
     options.AddPolicy("YourPolicyName", policy => policy.RequireClaim(...));
    Salin selepas log masuk
  2. [Authorize] menggunakan atribut kebenaran yang disesuaikan dengan pernyataan

     [Authorize(Policy = "YourPolicyName")]
     public IActionResult Action(...)
    Salin selepas log masuk
    Jika kaedah berasaskan strategi tidak berkenaan, anda boleh menggunakan antara muka
  3. untuk membuat adat
:

cara menggunakan contoh: IAuthorizationFilter AuthorizeAttribute

Dengan melaksanakan kaedah
public class ClaimRequirementAttribute : TypeFilterAttribute
{
    public ClaimRequirementAttribute(string claimType, string claimValue) : base(typeof(ClaimRequirementFilter))
    {
        Arguments = new object[] { new Claim(claimType, claimValue) };
    }
}

public class ClaimRequirementFilter : IAuthorizationFilter
{
    private readonly Claim _claim;

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

    public void OnAuthorization(AuthorizationFilterContext context)
    {
        bool 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
dalam penapis anda, anda boleh menentukan logik kebenaran mengikut pernyataan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan kebenaran tersuai di Core ASP.NET menggunakan tuntutan?. 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