Access Control
Access Controlการควบคุมการเข้าถึง

การควบคุมการเข้าถึง

Included in the “Power Extensions” bundle

มอบสิทธิ์การเข้าถึง schema อย่างละเอียด โดยอิงจากสถานะการเข้าสู่ระบบของผู้ใช้ บทบาท ความสามารถ และอื่นๆ

คำอธิบาย

ส่วนขยายนี้ช่วยให้เราสร้าง Access Control Lists เพื่อจัดการว่าใครสามารถเข้าถึงองค์ประกอบต่างๆ (operations, fields และ directives) ใน GraphQL schema ได้บ้าง

Custom Post Type ใหม่ชื่อ "Access Control List" จะถูกเพิ่มเข้าไปในไซต์ เราสามารถดูรายการได้ที่หน้า "Access Control Lists" ในเมนู และคลิก "Add New Access Control List" เพื่อเพิ่มรายการใหม่ในตัวแก้ไข

Access Control Lists
Access Control Lists
ตัวแก้ไข Access Control List
ตัวแก้ไข Access Control List

ในตัวแก้ไข เราจะระบุว่าต้องปฏิบัติตามกฎใดบ้างเพื่อเข้าถึงองค์ประกอบ schema ใด ซึ่งได้แก่ operations (query หรือ mutation), fields, global fields และ directives

การสร้าง Access Control List

เราจะกำหนด Access Control List ให้กับ endpoint ที่ต้องการ (private endpoint, single endpoint, custom endpoints หรือ persisted queries) ผ่าน Schema Configuration

การเลือก Access Control List ใน Schema Configuration
การเลือก Access Control List ใน Schema Configuration

เมื่อรัน GraphQL query หากมีองค์ประกอบ schema ที่เลือกไว้ใน Access Control List กฎที่เลือกจะถูกประเมิน

หากกฎใดไม่ผ่าน การเข้าถึง operation, field หรือ directive นั้นจะถูกปฏิเสธ และเราสามารถกำหนดวิธีที่ API ต้องตอบสนองได้:

  • โหมด Public: แสดงข้อความแสดงข้อผิดพลาดแก่ผู้ใช้ โดยระบุสาเหตุที่การเข้าถึงถูกปฏิเสธ
  • โหมด Private: ข้อความแสดงข้อผิดพลาดจะระบุว่า operation, field หรือ directive นั้นไม่มีอยู่

ตัวอย่างเช่น ใน โหมด public เราอาจได้รับการตอบสนองนี้:

{
  "errors": [
    {
      "message": "You must have role 'author' to access field 'title' for type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

ส่วนใน โหมด private เราอาจได้รับการตอบสนองนี้:

{
  "errors": [
    {
      "message": "There is no field 'title' on type 'Post'",
      "locations": [
        {
          "line": 86,
          "column": 3
        }
      ]
    }
  ]
}

รายการกฎการควบคุมการเข้าถึง

ส่วนขยายนี้มีกฎการควบคุมการเข้าถึงดังต่อไปนี้:

  • ปิดการเข้าถึง
  • อนุญาตการเข้าถึงเฉพาะเมื่อผู้ใช้เข้าสู่ระบบหรือออกจากระบบเท่านั้น
  • อนุญาตการเข้าถึงเฉพาะเมื่อผู้ใช้มีบทบาทที่กำหนด
  • อนุญาตการเข้าถึงเฉพาะเมื่อผู้ใช้มีความสามารถที่กำหนด