首先,你將無法阻止別人誰有權訪問數據庫或root用戶查看數據(至少不是沒有加密)。
就正常的站點操作而言,這並不是很難做到。你需要調用的兩個鉤子是hook_node_grants()和hook_node_access_records(),這裏有一個很好的例子,在問題here中這也是你想要的。
簡單地說,hook_node_access_records()返回一個結構詳細信息relms和id,它可以對它執行操作,而hook_node_grants()返回用戶的relms和id。如果兩者匹配,則授予訪問權限(讀取或寫入)。
這給了你很大的靈活性。一個例子是人們只能閱讀由具有相同星號的其他人創建的節點。在hook_node_grants你會檢查用戶對象來獲取starsign並返回$grants['starsign'] = 2
當一個節點被保存hook_node_access_records會檢查誰創造了它這樣做的用戶的星座:
$grants = array();
$grants[] = array(
'realm' => 'starsign',
'gid' => $account->starsign,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'priority' => 0,
);
return $grants
那方式如果relm和group id匹配用戶將被授予讀取權限。