Drupal 6 Drupal访问控制列表

Drupal 6 Drupal访问控制列表,drupal-6,sitemap,Drupal 6,Sitemap,为了确保我的网站是安全的,并且所有权限都设置正确,我正在寻找一种方法来生成特定用户有权访问的每个页面的列表。所以对于给定uid,用户访问返回TRUE的每个菜单回调 看起来像这样的东西: $user->uid==0 家 照片 联系我们 $user->uid=23 家 照片 联系我们 论坛 博客 等等。这在Drupal中是不可行的,因为从系统的角度来看,没有真正的页面,只有接受参数的回调函数。要澄清这一点,请考虑节点页面的标准路径: node/[nid] 这将接受[nid]的任意整数,然后节点/%

为了确保我的网站是安全的,并且所有权限都设置正确,我正在寻找一种方法来生成特定用户有权访问的每个页面的列表。所以对于给定uid,用户访问返回TRUE的每个菜单回调

看起来像这样的东西:

$user->uid==0

照片

联系我们

$user->uid=23

照片

联系我们

论坛

博客


等等。

这在Drupal中是不可行的,因为从系统的角度来看,没有真正的页面,只有接受参数的回调函数。要澄清这一点,请考虑节点页面的标准路径:

node/[nid]
这将接受[nid]的任意整数,然后节点/%路径的回调函数将尝试查找具有匹配id的节点-只有在查找该节点后,Drupal才“知道”页面是否确实存在

对于所有其他路径也是如此,因此基本上,您正在查看几乎无限数量的潜在页面,除了测试路径之外,没有办法知道它们是否真的“存在”或以404结尾

你可以做的是看看菜单表。在这里,您可以找到所有注册的路径,以及它们的回调函数和access\u回调函数。对于那些用户,您可以按用户进行检查,但结果将很难解释,因为路径很多,并且将包含许多占位符


如果使用URL别名/pathauto,则存在类似的选项。然后,您可以获取url_别名表并检查其中的所有条目。但是,由于您对保护站点的安全感兴趣,这并没有真正的帮助,因为您将错过任何没有别名的路径-如上所述,这些路径数不胜数。

Ok。如果我只是想要一个可访问节点的列表呢?检查node_access函数。您可以在所有节点上循环,并检查节点访问$op、$node、$account的结果,以获取您感兴趣的用户$account的$op view、update、create、delete的可能值。当然是可行的,但如果有足够的节点和用户,仍然需要进行一些处理。。。