3種權限管理方案

瀏覽網站時,有的時候,會告訴你,無權進入一些頁面。例如:一些技術性的論壇,剛進去的時候,只能看看貼子,並且只能在一定的區域看,不能發貼等。做電子商務時,電子商務的後臺是一個比較大的系統,不同的人進去會看到不同的頁面,如果能看到同一個頁面,也許允許的操作也不一樣,這些機制是怎麼實現的呢。下面就個人愚見分析幾種情況

一,簡單session控制

實現原理和方法:

用戶登錄後臺,輸入用戶名和密碼,對用戶的用戶名和密碼進行驗證,驗證通過後,可以把用戶的一些基本信息放到session裏面當用戶訪問後臺的其他頁面時,去判斷一下session是否存在,並且沒有過期。不過,後臺管理員權限一樣,沒有區分

1,後臺頁面共用的基本類,我們可以在基本類的里加以判斷,或者在基本類外面在extends一層,加以判斷,去check一下session。

2,直接重寫一個check_login.php每個後臺頁面都包涵這個頁面,通過這個頁面加以判斷,check一下session。

二,菜單控制

實現原理和方法:

菜單控制比簡單session控制要高級一點,不光判斷用戶是否登錄,還對用戶的權限進行了控制,不同的人看到不同的東西。

1,在顯示菜單的地方加以判斷,不同的用戶顯示不同的菜單。這種方法用戶雖然看不到菜單,但是可以通過輸入url,進入沒有顯示的菜單頁面,前提是用戶用戶知道url才行。

2,建立一個用戶和菜單內容的關係表,把用戶所能看到的內容,放到數據庫內,當要顯示菜單的地方,用數據庫進行讀取,如果用戶是通過輸入url進入的話,我們也可以根據用戶和url,到關係表中進行查找,如果沒有找到的話,就不准許進入,這種方法可以避免上面一種方法的弊端了。

三,頁面元素控制

上面說的菜單控制,可以設置權限到頁面的級別,但是如果我有這樣的需求又怎麼辦呢,所有的人都可以訪問一個頁面,一部分可以進行添加操作,一部分人可以進行刪除操作,一部分可以進行審覈工作。這樣的需求,菜單控制很難實現的。現在的權限管理中好多都用的這種方式。例如:一些開源的論壇,cms系統。個人想了一個方法,覺得可以實現頁面元素控制。看一下下面的圖片。

元素權限控制

元素權限控制

解釋一下:

A表,成員組表。這個表裏面存的是一個一個組,財務組,開發組,發貨組,定單審覈組,退貨組等。
B表,成員表。這個表裏面存的是一個一個成員,張三,財務組。李四,開發組,王五,發貨組,王五定單審覈組。
C表,元素權限表。這個表裏面存的是一個一個虛擬的權限。比如瀏覽權限,財務查看權限,發貨權限,定單審覈權限等。
D表,類別和元素權限的關係表,或者是頁面和元素權限的關係表。也就是說,一個類別擁有什麼權限,或者某個頁面擁有什麼權限。
E表,是成員組表和D表的關係表。表示這個成員組擁有那些權限,成員組擁有什麼權限,表成成員也擁有什麼權限。

爲了表達清楚我的意思,我把這一套,分成了5張表,可以精減一下,去掉一到二張表。

實現原理和方法:

頁面元素控制可以說是菜單控制的更進一步,更細一點了。對頁面裏面的具體操作也進行了控制。實現原理和菜單控制差不多。

1,和菜單管理一樣,在顯示菜單的地方,根據用戶所在組進行顯示。例如:張三,財務組,他進去看能看到財務的菜單,這個菜單下面也許會有很多頁面,每個頁面會有很多操作,查看一下E表,表找一下這個組能操作的類或者頁面。我把這個方法叫做提前做法,就是有就顯示,沒有不顯示。

2,還有一種辦法就是加載頁面時把頁面中的操作都顯示出來,在經過統一的接口來把不能操作的選項去掉。這樣的話,可以把頁面代碼和權限代碼分開。這樣我覺得不至於把代碼搞得太複雜。我把這個方法叫做馬後炮做法。

上面的三種方法,純屬個人看法,也是開發中的做過的。方法有很多歡迎探討。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章