2016-10-23 107 views
-2

目前,我有一個簡單的管理員登錄部分到我的網站,管理員可以從中添加/編輯頁面內容添加/編輯頁面或主題。 現在,我正在考慮在這個項目中爲這個網站按照需要的方式工作。我需要添加多級用戶系統, 我認爲將用戶級別作爲INT添加到我的表集將允許此, 然後在我的頁面中,我有我的"is_logged_in"函數調用我也可以調用用戶級別INT和將其存儲在會話中。 這樣如果用戶設置爲級別1顯示鏈接a, 如果用戶設置爲級別2顯示鏈接b。 還是我看着這個錯誤的方式?我如何將我的用戶登錄系統更改爲多層次登錄

+0

不,看起來不錯。去吧。 – arkascha

+0

走得更深入,並使用數組來存儲權限,以便您可以執行更多粒度的permision系統。 – Solrac

+0

如果您的解決方案適合您的需求,那麼您的解決方案就很好。在某些時候,您可能希望從「關卡」切換到更靈活的關卡,例如「角色」或「權限」等。但是,建立您還沒有使用的東西沒有意義(請參閱[YAGNI](https:/ /en.wikipedia.org/wiki/You_aren%27t_gonna_need_it))。 –

回答

0

無需重新發明輪子。您要查找的內容稱爲訪問控制列表(ACL)功能。有很多可用的解決方案可以加入到您的項目中。我個人使用Zend的Acl庫,但有更多的口味。

它是如何工作的(基本版本):您分配一些ACL角色 - 例如, 「admin」,「staff」,「user」,「guest」,其中「guest」將是您的默認匿名訪問者。當用戶登錄時,您將ACL角色保存在用戶的會話中。

然後,您創建一個ACL類,將這些角色分配給您的資源。例如。 「admin」可以讀取和編輯任何人的數據,「staff」可以讀取「admin」,「staff」和「user」數據,但只能編輯自己的和「用戶」數據,「user」可以讀取其他「用戶」只編輯自己的數據。

在您的應用程序中您需要檢查用戶是否被允許執行一些操作或訪問某個網站的某些部分(例如CMS)的任何時候,您都會檢查ACL規則以執行操作/允許訪問或告訴用戶他/她沒有被授權。