การอนุญาตตามข้ออ้างสิทธิ์
อนุญาตตามข้ออ้างสิทธิ์ของผู้ใช้
การอนุญาตตามข้ออ้างสิทธิ์ เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
นอกเหนือจากบทบาท
บทบาทเป็นกรณีเฉพาะของ claims การอนุญาตตาม claims สามารถตรวจสอบ claims ใดก็ได้ ไม่ว่าจะเป็นอีเมล แผนก ระดับการสมัครสมาชิก หรือตัวบ่งชี้สิทธิ์ ไม่ใช่เฉพาะบทบาทเท่านั้น
วิธีนี้ช่วยให้คุณควบคุมได้ละเอียดขึ้นโดยไม่ต้องสร้างบทบาทหลายสิบแบบ
// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = trueการเพิ่ม claims ลงในโทเค็น
ออก claims ทั้งหมดที่กฎการอนุญาตของคุณจะใช้ตรวจสอบ claims คือคู่ชนิด/ค่า
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim("department", "sales"),
new Claim("subscription", "pro"),
new Claim("email_verified", "true")
};การกำหนดนโยบาย claims
กฎตาม claims แสดงอยู่ในรูปของนโยบายที่ตั้งชื่อไว้ซึ่งลงทะเบียนด้วย AddAuthorization RequireClaim กำหนดให้ผู้ใช้ต้องมี claims ที่ระบุ
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("VerifiedEmail", policy =>
policy.RequireClaim("email_verified", "true"));
});RequireClaim โดยไม่ระบุค่า
หากคุณสนใจเพียงว่า claims นั้นมีอยู่หรือไม่ (ไม่ว่าจะมีค่าใดก็ตาม) ให้เรียก RequireClaim โดยระบุเพียงชนิด
options.AddPolicy("HasDepartment", policy =>
policy.RequireClaim("department"));RequireClaim พร้อมค่าที่อนุญาต
คุณสามารถระบุค่าที่อนุญาตไว้เป็นรายการได้ นโยบายจะผ่านเมื่อ claims ตรงกับค่าใดค่าหนึ่งในรายการ
options.AddPolicy("PaidTier", policy =>
policy.RequireClaim("subscription", "pro", "enterprise"));การใช้นโยบาย claims
อ้างอิงนโยบายด้วยชื่อใน [Authorize]
[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();การใช้งานกับ API แบบย่อ
API แบบย่ออ้างอิงนโยบายเดียวกันด้วยชื่อผ่าน RequireAuthorization
app.MapGet("/premium-reports", () => Results.Ok())
.RequireAuthorization("PaidTier");การรวมข้อกำหนดของ claims หลายรายการ
นโยบายสามารถเรียก RequireClaim ต่อกันหลายครั้งได้ โดยต้องผ่านทุกข้อกำหนด (AND)
options.AddPolicy("VerifiedSales", policy =>
policy
.RequireClaim("email_verified", "true")
.RequireClaim("department", "sales"));RequireAssertion สำหรับตรรกะแบบกำหนดเอง
เมื่อการตรวจสอบค่าคงที่ยังไม่เพียงพอ RequireAssertion จะเรียกใช้เงื่อนไขใด ๆ กับ ClaimsPrincipal
options.AddPolicy("AdultUser", policy =>
policy.RequireAssertion(ctx =>
{
var dob = ctx.User.FindFirst("birthdate")?.Value;
return DateTime.TryParse(dob, out var d) &&
d <= DateTime.UtcNow.AddYears(-18);
}));การอ่าน claims ขณะทำงาน
ภายในการทำงานหนึ่งรายการ คุณยังสามารถตรวจสอบ claims ได้โดยตรงเมื่อต้องการค่า ไม่ใช่เพียงผลว่าผ่านหรือไม่ผ่าน
var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");claims กับบทบาท — ควรใช้สิ่งใดเมื่อใด
ใช้บทบาทสำหรับหน้าที่งานในภาพรวม ใช้claimsสำหรับคุณลักษณะและตัวบ่งชี้ฟีเจอร์ ทั้งสองอย่างประกอบกันได้ นโยบายหนึ่งรายการสามารถกำหนดให้ต้องมีทั้งบทบาทและ claims หลายรายการ
options.AddPolicy("SalesManager", policy =>
policy.RequireRole("manager")
.RequireClaim("department", "sales"));ตรวจสอบความเข้าใจ
ยืนยันความเข้าใจเกี่ยวกับนโยบาย claims
สรุปทบทวน
คุณได้เรียนรู้การอนุญาตตาม claims:
- claims ใด ๆ ไม่ใช่เฉพาะบทบาท สามารถใช้ควบคุมการเข้าถึงได้
RequireClaimตรวจสอบการมีอยู่ของ claims หรือค่าที่อนุญาตแบบเฉพาะเจาะจงRequireAssertionรองรับตรรกะเงื่อนไขแบบกำหนดเอง- claims และบทบาทประกอบกันได้ภายในนโยบายที่ตั้งชื่อไว้รายการเดียว
ถัดไป: แบบจำลองการอนุญาตตามนโยบายฉบับเต็ม
คำถามที่พบบ่อย
บทเรียน “การอนุญาตตามข้ออ้างสิทธิ์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอนุญาตตามข้ออ้างสิทธิ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอนุญาตตามข้ออ้างสิทธิ์”
อนุญาตตามข้ออ้างสิทธิ์ของผู้ใช้ คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การอนุญาตตามข้ออ้างสิทธิ์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม
ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอนุญาตตามบทบาท
- การอนุญาตตามข้ออ้างสิทธิ์
- การอนุญาตตามนโยบาย
- ข้อกำหนดการอนุญาตแบบกำหนดเอง