Отключение / просмотр узла и других скрытых видов в Drupal? - PullRequest
3 голосов
/ 04 октября 2009

Много долгих ночей провел на моем сайте, и теперь я начал делать всевозможные проверки безопасности и наткнулся на следующее:

www.mysite.com/node

Показывает последние x узлов, к которым у пользователя есть доступ. Я не хочу, чтобы этот вид был виден пользователям. И я, конечно же, не хочу, чтобы другие взгляды, подобные этому, были доступны. Итак, мои вопросы:

  1. Как отключить это представление?
  2. Есть ли другие скрытые представления, о которых я не знаю, которые анонимный пользователь может использовать для доступа к нескольким узлам одновременно?

Ответы [ 5 ]

5 голосов
/ 04 октября 2009

Вы хотите использовать hook_menu_alter () в пользовательском модуле для перенаправления того, что происходит, когда кто-то пытается загрузить страницу в /node. Есть два подхода.

Во-первых, вы можете дать однозначный отказ в доступе:

function custom_module_menu_alter(&$items) {
  $items['node']['access callback'] = FALSE;
}

Во-вторых, вы можете перенаправить страницу на один из ваших вариантов:

function custom_module_menu_alter(&$items) {
  $items['node']['page callback'] = 'custom_module_new_page_content';
}
function custom_module_new_page_content() {
  return 'Go away!';
}

Другие объявления

Если вы беспокоитесь о списках, где пользователи имеют доступ, результаты поиска и трекер - единственные другие места, которые я могу вспомнить.

Этот комментарий предоставляет логику для удаления того, что вы хотите из результатов поиска, используя пользовательский модуль.

К сожалению, трекер не особо настраивается без прямых взломов. Лучше всего использовать одну из замен трекера в contrib или, еще проще, изменить замену трекера, которая поставляется с модулем Views.

РЕДАКТИРОВАТЬ: Уточнение - вы также можете отключить модуль Tracker из дополнительных «основных» модулей. Однако это очень полезная функция, поэтому вы можете захотеть сохранить ее в какой-либо форме.

3 голосов
/ 04 октября 2009

Что касается отключения найденных вами путей, я бы предложил Грейсайду использовать hook_menu_alter для настройки обратного вызова доступа.

Что касается других «скрытых» представлений, это во многом зависит от используемых вами модулей, так как многие модули добавляют некоторые «представления» по умолчанию (в смысле страниц обзора, не обязательно просмотра представлений модулей). Поэтому вместо того, чтобы пытаться найти их здесь косвенно, я бы предложил взглянуть на menu_router таблицу вашей базы данных Drupal. Там вы найдете все пути, используемые в данный момент вашим экземпляром (внутренние пути, а не псевдонимы, но все псевдонимы соответствуют внутреннему).

2 голосов
/ 04 октября 2009

Один из относительно простых способов сделать это - включить модуль Path под ядром и псевдоним /node к чему-то еще, например /node/1 или как угодно ..

Не уверен насчет других URL-адресов, которые приносят вам то, что вы не хотите видеть ... я бы подумал, что эта техника подойдет для любого, с кем вы столкнетесь

1 голос
/ 06 июля 2012
function modulename_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';
}

Источник: http://drupal.org/node/500296#comment-3532630

0 голосов
/ 04 октября 2009

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

...