爲了確保我的網站安全並且所有權限都設置正確,我正在尋找一種方法來生成特定用戶有權訪問的每個頁面的列表。 (所以...每個菜單回調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