You are here

限制对节点的访问

老葛的Drupal培训班 Think in Drupal

有多种方式可用于限制对节点的访问。你已经看到了,如何使用hook_access()来限制对一个节点类型的访问,以及使用hook_perm()定义权限。但是Drupal提供了用于控制访问的更丰富的工具集:使用表node_access以及两个访问钩子函数hook_node_grants()和hook_node_access_records()。
 
    当Drupal初次安装时,将会向node_access表中写入一条记录,它将有效的关闭节点访问机制。只有当使用了节点访问机制的模块被启用时,才会用到Drupal的这一部分。位于modules/node/node.module中的函数node_access_rebuild()可用来追踪启用了哪些节点访问模块,如果这些模块都被禁用了,那么这个函数还可以恢复默认记录,如表7-2所示。
 
7-2. node_access表的默认记录
nid gid realm grant_view grant_update grant_delete
0   0   all      1           0            0
 
    一般情况下,如果一个节点访问模块正被使用(也就是说,它修改了标node_access),如果它没有向表node_access插入一行记录,用来定义如何处理访问,那么Drupal将拒绝对节点的访问。
 

Drupal版本: