0Pricing
C# Academy · บทเรียน

การอนุญาตตามข้ออ้างสิทธิ์

อนุญาตตามข้ออ้างสิทธิ์ของผู้ใช้

การอนุญาตตามข้ออ้างสิทธิ์ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอนุญาตตามบทบาท
  2. การอนุญาตตามข้ออ้างสิทธิ์
  3. การอนุญาตตามนโยบาย
  4. ข้อกำหนดการอนุญาตแบบกำหนดเอง
← กลับไปที่ C# Academy