Kiểm soát truy cập
Kiểm soát truy cậpKiểm Soát Truy Cập

Kiểm Soát Truy Cập

Included in the “Power Extensions” bundle

Cấp quyền truy cập chi tiết vào schema, dựa trên việc người dùng đã đăng nhập (hay chưa), có vai trò hoặc năng lực nhất định, và nhiều hơn nữa.

Mô tả

Tiện ích mở rộng này cho phép chúng ta tạo các Danh sách Kiểm soát Truy cập, để quản lý ai có thể truy cập các phần tử khác nhau (thao tác, trường và chỉ thị) từ schema GraphQL.

Một Custom Post Type mới "Danh sách Kiểm soát Truy cập" được thêm vào trang web. Chúng ta có thể duyệt các mục của nó trên trang "Danh sách Kiểm soát Truy cập" trong menu, và nhấp vào "Thêm Danh sách Kiểm soát Truy cập Mới" để thêm một mục mới vào trình soạn thảo.

Danh sách Kiểm soát Truy cập
Danh sách Kiểm soát Truy cập
Trình soạn thảo Danh sách Kiểm soát Truy cập
Trình soạn thảo Danh sách Kiểm soát Truy cập

Trong trình soạn thảo, chúng ta chỉ định những quy tắc nào phải được thỏa mãn để truy cập các phần tử schema nào, trong số các thao tác (query hoặc mutation), các trường, các trường toàn cục, và các chỉ thị.

Tạo một Danh sách Kiểm soát Truy cập

Chúng ta gán Danh sách Kiểm soát Truy cập cho endpoint mong muốn (endpoint riêng tư, endpoint đơn, các endpoint tùy chỉnh hoặc persisted queries) thông qua Cấu hình Schema.

Chọn một Danh sách Kiểm soát Truy cập trong Cấu hình Schema
Chọn một Danh sách Kiểm soát Truy cập trong Cấu hình Schema

Khi thực thi một GraphQL query, nếu nó chứa bất kỳ phần tử schema nào đã chọn trong Danh sách Kiểm soát Truy cập, các quy tắc đã chọn sẽ được đánh giá.

Nếu bất kỳ quy tắc nào không được thỏa mãn, quyền truy cập vào thao tác, trường hoặc chỉ thị đó bị từ chối, và chúng ta có thể cấu hình cách API phải cung cấp phản hồi:

  • Chế độ công khai: Cung cấp thông báo lỗi cho người dùng, cho biết lý do truy cập bị từ chối
  • Chế độ riêng tư: Thông báo lỗi cho biết rằng thao tác, trường hoặc chỉ thị không tồn tại

Chẳng hạn, trong chế độ công khai, chúng ta có thể nhận được phản hồi này:

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

Trong khi ở chế độ riêng tư chúng ta có thể nhận được phản hồi này:

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

Danh sách các quy tắc Kiểm soát Truy cập

Tiện ích mở rộng cung cấp các quy tắc Kiểm soát Truy cập sau:

  • Tắt quyền truy cập
  • Chỉ cấp quyền truy cập nếu người dùng đã đăng nhập hoặc đã đăng xuất
  • Chỉ cấp quyền truy cập nếu người dùng có một vai trò nhất định
  • Chỉ cấp quyền truy cập nếu người dùng có một năng lực nhất định