为了确保我的网站安全并且所有权限都设置正确,我正在寻找一种方法来生成特定用户有权访问的每个页面的列表。 (所以...每个菜单回调user_access()
返回给定的uid TRUE
)。Drupal访问控制列表
东西是这样的:
$用户> UID == 0
首页
照片
联系我们
$用户> uid = 23
首页
照片
联系我们
论坛
博客
等
为了确保我的网站安全并且所有权限都设置正确,我正在寻找一种方法来生成特定用户有权访问的每个页面的列表。 (所以...每个菜单回调user_access()
返回给定的uid TRUE
)。Drupal访问控制列表
东西是这样的:
$用户> UID == 0
首页
照片
联系我们
$用户> uid = 23
首页
照片
联系我们
论坛
博客
等
这是不是真的可行在Drupal,因为有一个从系统角度看,没有真正的页面,只有带参数的回调函数。为了澄清,标准路径的思考节点页:
node/[nid]
这将接受[NID],为node/%
路径的任意整数,则回调函数将尝试找到匹配的ID的节点 - 它之后只有寻找Drupal'知道'这个页面是否真的存在。
这同样适用于所有其他路径正确,所以基本上你正在寻找一个(几乎)无限数量的潜在页,没有办法知道,短的测试路径,如果他们是“存在”或在404结束。
你可能做的是看看menu_router
表。你会发现所有注册的路径,以及它们的回调函数和access_callback函数。对于那些你可以做每个用户的检查,但结果很难解释,因为路径很多,并且会包含很多占位符。
如果您使用URL-Aliases/pathauto,则存在类似的选项。然后你可以拿到url_alias
表格,并检查那里的所有条目。但是,既然你对保护你的网站感兴趣,这将不会有什么帮助,因为你会错过任何没有别名的路径 - 如上所述,这些路径是无数的。
好的。如果我只想要一个可访问节点的列表呢? – 2009-08-25 17:25:08
检查'node_access()'函数。您可以遍历所有节点,并检查node_access($ op,$ node,$ account)''的结果,以查看$ op(view,update,create,delete)重新感兴趣。当然可行,但仍然相当一些处理,给予足够的节点和用户... – 2009-08-25 19:19:26