一、基礎講解。
最近用到了RedGlove Permission權限管理系統,將自己的設計思路以及開發過程一起分享給大家,希望大家能多提意見。
首先,我來介紹一下權限系統的主要組成部分,它主要由模塊權限(功能模塊)、角色權限、用戶權限三大部分組成,下面將詳細介紹一下三大權限的作用以及它們互相存在的依賴性。
模塊權限部份:
說白一點就是管理系統中的功能模塊,而在這些模塊中,它們有着各式各樣的具體的操作,這些具體的操作權限就是模塊權限,例如現新加了一個用戶管理的功能模塊,在這個
模塊設計中需要進行瀏覽、添加、修改、刪除、審核、查詢(用戶管理)等一些具體的操作,在系統運行的過程中,不是所有的用戶都會擁有這些權限的(功能的),根據需求(需要得到功能),就產生了下
面的角色權限。
角色權限部分:
它就是一個身份(管理員/員工),擁有這個身份的用戶在系統中能做些什么,不能做些什么,用戶都得依照這個身份,無法過界,這也是一個權限的范圍限定,在一個管理系統有很多的用戶,我們不能將模塊中
的權限逐個的分配給用戶,現在角色的出現就解決了這個問題,它就像一個權限組,將模塊的權限指派給角色,讓擁有該角色的用戶可以擁有對模塊對應的操作權限,然而,一個系統中用戶可能會成千上萬不
等,但我想角色最多不過幾十個,將模塊權限授權給幾十個角色比授權給上萬個用戶輕松多了,角色雖然是權限組,有限定的作用范圍,但是也有會出現意外情況的時候,如果一個用戶有操作用戶模塊的角色,
但對它的有個特殊的要求,就是不能操作用戶模塊中的刪除或其它功能,還有就是它還有操作另外模塊的權限,而它擁有的角色只能訪問用戶模塊,怎么辦呢?難道要為這一個用戶再建立一個角色嗎?我的回答
是No.
用戶權限:
我想很多朋友以前在開發管理系統時都用過這種權限模式,雖然這種方法比較原始,但它能解決我們上面所遇到的問題,當然,還需要做一些小小的改進,在角色中,我們只告訴用戶能做什么,沒有告訴的就不能做,
以角色做權限批量判斷這點已經夠了,而用戶單獨的權限判斷有點特殊,它得跳出角色。它的權限優先於角色的權限,它擁有對某權限允許和禁止操作的功能,例如一個用戶的角色權限可以操作用戶模塊所有的功
能,而該用戶擁有了該模塊某一功能的禁止權限,那該用戶不能對這個模塊進行該功能操作,反之,用戶角色沒有授權這個模塊功能,而用戶權限被授予了這個功能模塊的允許權限,那它就能操作該功能,流程圖如
下:
如果這個不能讓你完全理解,那就在看看這個鏈接:http://www.cnblogs.com/Gavinzhao/archive/2009/11/10/1599691.html
權限管理的代碼實現請看下篇博客~~~~~~~~