2010-08-03 57 views
3

給定網站站點有隻能通過不同的用戶組可以訪問不同的網頁。假設訪客用戶只能訪問歡迎頁面/搜索頁面,而管理員用戶可以訪問更新數據庫的頁面等。PHP - 良好實踐中應用的多級PHP用戶授權

我對這個領域沒有多少經驗,並希望採用一些最佳實踐與乾淨/簡單/安全實施。

如果可能的話,我想看看一些具體的例子/教程,甚至是一本書的資源。

謝謝您的幫助

+5

你描述的是不認證,它是**授權**。 – Artefacto 2010-08-03 19:51:28

回答

3

我發現,許多應用程序可在網上(WordPress的是,Joomla,和許多其他),在這一領域組織得很差(窮比我做什麼,在任何情況下)。

看看它是如何的MVC框架,如Zend框架,CakePHP的,Symfony的完成。 MVC主要用於更大型的項目,因此我認爲他們在驗證方面也做了很多工作。

在2個字,這才能正常工作,你的所有頁面生成的類(我建議使用OOP的)必須從父類,其將持有的訪問控制方法得出的。或者你可以有一個具有靜態功能的類來進行訪問控制。在執行任何操作之前,只需調用這些函數來檢查用戶是否有權訪問此功能。功能可以分組到類中,使用許多方法(在MVC中 - 控制器和操作)。您可以按如下方式將訪問信息存儲在數據庫中:groupID, Class, Method, Permission,其中權限可以是布爾格或授權。爲了提高速度,在第一次查詢時提取所有用戶的權限,將其存儲在數組或對象中,以便不會爲用戶請求中的每個權限驗證生成查詢,而是解析保存的數據。

+0

Hello Alexander, 感謝您的意見。 現在,我不使用任何框架和OOP來執行我的PHP代碼。我剛開始開發Web應用程序,並希望首先創建一些初始應用程序。那麼,將來我會採用Zend框架。我正在尋找替代解決方案,因爲我不使用框架和OOP PHP。 謝謝 – q0987 2010-08-03 16:14:56

3

每個用戶可以在您的應用程序/網站中扮演角色或角色。想象一下你有一個應用程序,有些人可以編輯用戶,其他人可以插入任務,而其他人可以解決任務。創建三個角色:用戶管理者,任務分配者和任務解決者。

然後給用戶他們的角色。

有些人把角色組。你分組給他們權限。因爲用戶充當

這只是一個簡單的例子,它總是根據你的要求人力資源經理或網站發佈等等。我更喜歡稱它的作用。可以有基於團隊的權限,基於部門的權限等

http://en.wikipedia.org/wiki/Role-based_access_control

就個人而言,我必須分解爲模塊的應用。每個模塊都有對象,並且這些對象具有操作。例如:user.department.list =在模塊用戶中,有一個對象部門和操作列表(部門)。創建角色或組時,將這些權限分配給該角色(組)和用戶。對於角色用戶管理員,有權限user.user.listuser.user.edit,user.department.list,user.department.edit。在你認證一個用戶(知道他是誰)加載他分配給的角色之後。每個頁面(控制器)或每個方法都可以檢查用戶的權限 - 該用戶是否被允許列出部門?