0

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

看起来像这样的东西:

$user->uid == 0

相片

联系我们

$user->uid = 23

相片

联系我们

论坛

博客

等等

4

1 回答 1

0

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

node/[nid]

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

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

能做的就是看看menu_router桌子。在那里您会找到所有已注册的路径,以及它们的回调和 access_callback 函数。对于那些您可以按用户进行检查的人,但结果很难解释,因为路径很多并且包含许多占位符。

如果您使用 URL-Aliases/pathauto,则存在类似的选项。然后你可以拿url_alias桌子检查那里的所有条目。但是由于您有兴趣保护您的网站,这并没有真正的帮助,因为您会错过任何没有别名的路径 - 如上所述,这些路径不计其数。

于 2009-08-24T23:42:21.627 回答