2012-06-16 244 views
1

只是想知道用戶權限檢查,PHP用戶權限檢查

你應該保持權限在會議

如。選擇用戶信息並將權限ID存儲在會話中

或者在執行查詢之前對數據庫執行權限檢查?

+7

這是許多宗教辯論的主題。有些人認爲爲了「性能」保存一個查詢是很好的......我通常會說,而不是每次都要確保從數據庫中獲取數據,以防止權限之間發生變化的危險。 –

+1

觀看這個http://phpgacl.sourceforge.net/ - 並不斷閱讀關於ACL – Burimi

回答

1

在應用程序中,不可用的數據不可用。你如何建立這個簡單的程序取決於你,並且很大程度上取決於你如何構建你的應用程序。

例如,您允許使用您在整個應用程序中共享的數據庫憑據進行數據訪問,該數據庫憑據可能位於其配置值內。

假設你這樣做:如果你沒有問題,爲什麼你關心一個更詳細的案例呢?

1

我每次從數據庫中獲取數據,所以當我更改權限時,用戶會立即更新而不是下一次登錄。

許多人會認爲可能會有性能損失。但是,如果你像大多數PHP用戶一樣使用MySQL,結果將保存在RAM中的查詢緩存中,並且幾乎立即可用。

1

這取決於您的網站的安全級別。如果您認爲安全性對於您的網站非常重要,並且希望在用戶更改後立即對用戶進行安全更改,則必須使用數據庫調用。但是,如果您的權限系統是以這種方式設計的,則它可能變得非常慢並且效率低下。

如果安全性可以「等待」下一個會話,那麼我認爲最好在會話中保存權限以避免性能損失。

1

這是memcache的一個很好的用例。您可以將用戶權限存儲在數據庫中,將其拉下一次並緩存。後續頁面加載將從memcache中獲取。

當管理員更改用戶權限時,該操作可以簡單地使緩存鍵無效(刪除)。然後,下一次您從緩存中獲取它將不會在那裏,您將知道再次訪問數據庫。