Điểm:1

Trình xử lý quyền truy cập thực thể gây ra "Kết quả của bộ điều khiển tuyên bố cung cấp siêu dữ liệu bộ nhớ cache có liên quan, nhưng siêu dữ liệu bị rò rỉ đã được phát hiện."

lá cờ ph

Tôi đang viết một trình xử lý truy cập thực thể tùy chỉnh cho một thực thể tùy chỉnh để kiểm tra xem người dùng có quyền truy cập vào nút bên dưới hay không. Mã checkAccess() trông như thế này:

$uuid = $entity->uuid->getString();
if (isset($uuid)) {
  $nodes = $this->node->getQuery()->accessCheck(TRUE)->condition('uuid', $uuid)->execute();
  if (!empty($nodes)) {
    trả về AccessResult::allowed();
  }
}
return AccessResult::forbidden("Truy cập bị từ chối.");

Vấn đề là khi tôi đi đến điểm cuối jsonapi cho thực thể, tôi gặp lỗi "Kết quả của bộ điều khiển tuyên bố sẽ cung cấp siêu dữ liệu bộ đệm có liên quan, nhưng siêu dữ liệu bị rò rỉ đã được phát hiện. Vui lòng đảm bảo rằng bạn không hiển thị nội dung quá sớm. Lớp đối tượng được trả về: Drupal\jsonapi\CacheableResourceResponse."

Nếu tôi trả về accessResult::allowed() trước truy vấn $nodes thì nó sẽ hoạt động. Điều gì đang xảy ra ở đây?

4uk4 avatar
lá cờ cn
accessCheck(TRUE) rò rỉ siêu dữ liệu, xem https://drupal.stackexchange.com/questions/251864/logicException-the-controller-result-claims-to-be-providing-relevant-cache-meta. Tại sao không sử dụng $entity->access('view')?
Lambic avatar
lá cờ ph
Có vẻ như nếu tôi tải nút và sau đó thực hiện $node->access('view') thì nó sẽ hoạt động, sẽ đăng câu trả lời đó
Điểm:2
lá cờ ph

Có vẻ như việc sử dụng accessCheck(TRUE) gây ra điều này, vì vậy cách giải quyết là:

if (isset($uuid)) {
  $node = $this->node->loadByProperties(['uuid' => $uuid]);
  nút $ = đặt lại ($ hành động);
  if ($node->access('view')) {
    trả về AccessResult::allowed();
  }
}

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.