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!