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


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

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

enter image description here

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

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

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

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

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

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

Author: Scott, 2011-03-22

1 answers

Запись доступа, которую вы видите, может быть доступом по умолчанию, который использует 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 означает пользователей без разрешения доступ к контенту.

 1
Author: kiamlaluno, 2011-03-22 18:59:44