Что такое запись доступа “content_access:все”?Это переопределяет мой модуль доступа к таксономии

drupal.stackexchange https://drupal.stackexchange.com/questions/1171

  •  16-10-2019
  •  | 
  •  

Вопрос

У меня были проблемы с моими разрешениями с тех пор, как я в последний раз перестраивал свои разрешения.(Я сделал это после работы над разрешениями для ссылок на пользователей.В этом поле нет ссылки на пользователя)

Разрешения на таксономию имеют одинаковый приоритет 0.Фактически все модули доступа имеют нулевой приоритет.Когда я перехожу на страницу, которую можно увидеть, даже если она не должна быть видна, она показывает следующее как предоставляющее доступ к просмотру страницы:

enter image description here

Я думаю, что я должен предоставить людям доступ к просмотру страниц по умолчанию, а затем убрать его, если назначена таксономия.У меня это работало раньше, и я не понимаю, почему это перестало работать.

Что я могу сделать, чтобы разобраться в этом?Я уже несколько часов занимаюсь этим вопросом и немного озадачен.

У меня установлены следующие модули, касающиеся разрешений:

  • Доступ к контенту
  • Ссылка на пользователя для доступа к узлу
  • Контроль доступа к Таксономии

Я не уверен, актуально это или нет, но я также получаю сообщение при наведении курсора мыши на удалить, в котором говорится:

ДНК и Core, похоже, расходятся во мнениях по этому пункту .Это ошибка в любом из них и должна быть исправлена!Попробуйте посмотреть на этот узел как на этого пользователя и проверьте , есть ли еще разногласия.

Это было полезно?

Решение

Запись доступа, которую вы видите, может быть доступом по умолчанию, который использует Drupal, и который, насколько я могу сказать, глядя на код, используется только тогда, когда ни один модуль не реализует права доступа к узлу.
node_access_rebuild() и node_access_acquire_grants() оба добавляют эту запись доступа, если ни один модуль не реализует какой-либо перехват доступа к узлу, или ни один модуль не возвращает никакой записи доступа.

function node_access_rebuild($batch_mode = FALSE) {
  db_query("DELETE FROM {node_access}");
  // Only recalculate if the site is using a node_access module.
  if (count(module_implements('node_grants'))) {
    // …
  else {
    // Not using any node_access modules. Add the default grant.
    db_query("INSERT INTO {node_access} VALUES (0, 0, 'all', 1, 0, 0)");
  }

  if (!isset($batch)) {
    drupal_set_message(t('Content permissions have been rebuilt.'));
    node_access_needs_rebuild(FALSE);
    cache_clear_all();
  }
}

Я бы не стал предлагать удалять эту запись доступа из таблицы доступа к узлам, иначе пользователи без определенных разрешений не смогли бы просматривать ни один узел, для которого модуль не имеет записи доступа к узлам.В Drupal по умолчанию запрещен доступ к узлу;фактически, модуль узла записывает в таблицу доступа к узлу только те записи, которые позволяют получить доступ к узлу.

Обновить: Как вы сообщили, вы также используете Доступ к контенту, возможно, вас заинтересует этот отчет о проблеме: Не захватывайте сферу "все".
Запись доступа, на которую вы обращаете внимание, вероятно, является записью, добавленной Доступ к контенту;краткое имя модуля - content_access, и, вероятно, модуль использует его в качестве области предоставления.

Я думаю, что я должен предоставить людям доступ к просмотру страниц по умолчанию, а затем убрать его, если назначена таксономия.

Поскольку доступ к узлу Drupal работает, доступ запрещен по умолчанию, и он предоставляется для узлов, для которых модуль предоставляет его;это прямо противоположно тому, что вы делаете.
Доступ по-прежнему разрешен пользователям с определенными разрешениями, что в Drupal 6 означает пользователей с администрирование узлов разрешение, и не разрешено для пользователей без определенного разрешения, что в Drupal 6 означает пользователей без доступ к контенту разрешение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top