本文的論述範圍限定於計算機應用軟體系統方向。對於某一個應用系統,每個用戶扮演什麼樣的角色,即該用戶享有什麼樣的訪問權限,對於某一個單位或者機構在進行信息化辦公(確切的說是使用應用軟體辦公)來說,至關重要:明確的角色產生了明確的權限,明確的權限界定了每一個工作人員(用戶)的工作職能,使得該單位或機構的高效運行。
用戶在成為某單位的一員後,該用戶將被賦予工作上的內容即工作範圍,例如醫院的不同科室的醫生需要完成其應該完成的工作:在自己所擅長的科室坐診以及對應科室的住院部以及手術室相關工作等,但因醫生的專業的不同方向性就決定了不同的醫生屬於不同的門診科室,在不同的科室裡診斷患有不同疾病的病人,根據病情的需要醫生會安排檢查、住院和手術等醫學救治流程,在這樣的系統流程中反應出不同科室醫生的角色以及角色中的權限使用。反應在軟體系統上,就是用戶根據註冊的帳戶登陸系統,根據其所具有的權限,對工作對象進行數據的採集錄入,根據工作對象的反饋,對錄入系統的數據進行查詢,更新和刪除等操作。對於用戶的基本操作,因其被系統所賦予的角色,而限定了其操作的範圍(權限)。
在系統中,用戶的屬性有:用戶的基本信息、用戶的單位信息(一般情況下,用戶所在單位決定用戶角色的方向)、用戶的角色信息、用戶的權限信息。這些基本的信息構成了用戶登陸系統後系統根據這些基本信息的組成而分配給用戶的可訪問的資源(權限)。用戶的基本信息即包含用戶的唯一ID,一般情況下該用戶僅可在一個單位中任職,因此用戶信息與單位信息形成多對一的數據關係。而用戶信息與角色信息的關係是多對多的關係,即一個用戶可以擁有多重角色,而某一角色下可以賦予多個用戶。角色信息與權限信息亦是多對多的關係,即某一角色包含多個權限條目,而某一權限條目可被多個角色所訪問。梳理完用戶、單位、角色、權限之間的關係,也就確定了用戶在特定角色特定單位下的權限了。
我們再看應用系統如何進行權限的控制。用戶根據自己唯一的ID(帳戶名和密碼或指紋驗證、虹膜驗證、刷臉驗證等等)登陸系統,向系統發出登陸請求,系統讀取用戶的驗證信息,確認該用戶的身份,獲取用戶的基本信息、單位信息、角色信息以及對於角色的權限信息,根據權限信息所指向的可訪問資源,通過數據的整合將可訪問的資源信息返回到終端,即登陸成功以及顯示了這個用戶在賦予了某種角色的可訪問的資源,進而該用戶可以進行賦權下的相關業務操作。
對於具體的實現,根據不同的技術手段有不同的實現方式。這裡以JavaWeb為主要技術手段進行分析:控制權限即控制用戶可以訪問的資源,這裡的資源是什麼呢?簡而言之就是眾多不同功能的可訪問的和可展現的JSP頁面,當然也可以是頁面中某一操作功能的區域或按鈕,這就引出了一個我們必須在技術上做出選擇的問題:如何控制權限基本條目的粒度大小,是以一個Web頁面作為基本權限粒度,還是以Web頁面中的某些功能區域或按鈕作為權限粒度呢?對於如何選擇粒度的大小應更具具體系統的實現為準,在此不做闡述。由此我們可以得到一個抽象的結論:用戶的可訪問資源的實現過程中需要控制基本權限粒度的大小。
任何抽象的理論在成為理論之前都應該進行實際的驗證。以上論述是我從事相關工作的一些見解,希望對從事相關工作的朋友有所幫助。