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!