【问题标题】:Disabling /node view and other hidden views in Drupal?在 Drupal 中禁用 /node 视图和其他隐藏视图?
【发布时间】:2009-10-03 23:18:33
【问题描述】:

在我的网站上度过了许多漫长的夜晚,现在我开始进行各种安全检查并偶然发现以下内容:

www.mysite.com/node

显示用户可以访问的最新 x 个节点。我不想让用户看到这个视图。我当然不希望有任何其他与此类似的视图可用。所以,我的问题是:

  1. 如何禁用此视图?
  2. 是否还有其他我不知道的隐藏视图,匿名用户可以使用这些视图同时访问多个节点?

【问题讨论】:

  • Drupal 5?德鲁巴6?视图模块?
  • Drupal 6。我确实有视图模块。

标签: drupal drupal-6


【解决方案1】:

您想在自定义模块中使用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!';
}

其他列表

如果您担心用户可以访问的列表,那么搜索结果和跟踪器是我唯一记得的其他地方。

This comment 提供了使用自定义模块从搜索结果中取消设置您想要的任何内容的逻辑。

不幸的是,如果没有直接的 hack,Tracker 就不是特别可定制的。您最好的选择是使用 contrib 中的跟踪器替换之一,或者更简单的是,修改与 Views 模块一起打包的跟踪器替换。

编辑:澄清-您也可以从可选的“核心”模块中禁用跟踪器模块。但是,它是一个非常有用的功能,因此您可能希望以某种形式保留它。

【讨论】:

  • 这有帮助,但是其他视图呢?还有其他我应该注意的吗?
  • 用“其他列表”部分更新了答案。
  • 您还需要重新路由或替换 rss.xml。它是 /node 的 RSS 提要。
【解决方案2】:

至于禁用您找到的路径,我第二个 Graysides 建议使用 hook_menu_alter 调整访问回调。

至于其他“隐藏”视图,这在很大程度上取决于您使用的模块,因为许多模块添加了一些默认“视图”(在概览页面的意义上,不一定是视图模块视图)。因此,与其尝试在此处间接找到它们,我建议查看您的 Drupal 数据库的 menu_router。在那里您会找到您的实例当前使用的所有路径(内部路径,不是别名,但所有别名都映射到内部路径)。

【讨论】:

  • 是的,我假设只有 Drupal Core,但 hook_menu_alter 可以应用于 menu_router 表中的任何内容。
【解决方案3】:

一种相对简单的有效方法是打开核心下的Path module 并将/node 别名为/node/1 或其他任何东西..

不确定是否有其他网址可以为您提供您不想看到的东西...我认为这种技术适用于您遇到的任何人

【讨论】:

  • 如何使用 Path 模块给 /node 起别名?
【解决方案4】:
function modulename_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';
}

来源:http://drupal.org/node/500296#comment-3532630

【讨论】:

    【解决方案5】:

    “节点”视图是默认的首页视图。所以它通常与您在首页上出现的内容相同。

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多