2009-08-24 80 views
0

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

东西是这样的:

$用户> UID == 0

首页

照片

联系我们

$用户> uid = 23

首页

照片

联系我们

论坛

博客

回答

0

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

node/[nid] 

这将接受[NID],为node/%路径的任意整数,则回调函数将尝试找到匹配的ID的节点 - 它之后只有寻找Drupal'知道'这个页面是否真的存在。

这同样适用于所有其他路径正确,所以基本上你正在寻找一个(几乎)无限数量的潜在页,没有办法知道,短的测试路径,如果他们是“存在”或在404结束。

可能做的是看看menu_router表。你会发现所有注册的路径,以及它们的回调函数和access_callback函数。对于那些你可以做每个用户的检查,但结果很难解释,因为路径很多,并且会包含很多占位符。

如果您使用URL-Aliases/pathauto,则存在类似的选项。然后你可以拿到url_alias表格,并检查那里的所有条目。但是,既然你对保护你的网站感兴趣,这将不会有什么帮助,因为你会错过任何没有别名的路径 - 如上所述,这些路径是无数的。

+0

好的。如果我只想要一个可访问节点的列表呢? – 2009-08-25 17:25:08

+0

检查'node_access()'函数。您可以遍历所有节点,并检查node_access($ op,$ node,$ account)''的结果,以查看$ op(view,update,create,delete)重新感兴趣。当然可行,但仍然相当一些处理,给予足够的节点和用户... – 2009-08-25 19:19:26