漫談權限系統系列之概述、目的和需求
一. 概述
本文根據對中小型應用系統的權限系統的需求進行闡述,并對通常用于實現權限系統的兩種思想、技術策略以及技術實現方案進行描述,比較其優缺點,同時對開源類型的產品進行介紹,最后結合自己的實際經驗介紹自己的實現方案以及碰到的難點。
本文并不是什么理論化的文章,完全是實戰型的總結和實戰的討論,至于理論請大家去參考更為專業的文章。
二. 目的
此文的編寫作為自己對于權限系統進行系統化的整理,畢竟權限系統是幾乎所有系統中都需要的,但一直以來由于在權限系統上并沒有什么通用的方案,所以幾乎是N多的人都實現了自己的一套,在此我也是拋磚引玉。
三. 需求
3.1. 描述
這里對于需求的描述都是基于自己工作以來實際項目需求的經驗而綜合的,如有遺漏之處歡迎大家補充,不過也希望大家明白范圍,是指中小型系統,至于大型的企業系統從來就沒做過,我也無從提出需求。
從一個實際的場景來描述一般中小型系統中涉及的權限需求吧,在通常的B/S系統中,首頁列出不需登錄可訪問的信息,登錄后則根據用戶擁有的權限顯示相應的菜單,在具體菜單對應的模塊里根據用戶的權限顯示相應權限的按鈕,同時顯示當前用戶可訪問的相應的資源。
非功能性的需求:
l 簡便的授權方式。避免每增加一個用戶就要不斷的去授予N多的權限,避免相同權限的用戶還要去相同的授予,提供出分組的功能。
l 權限的繼承。在上面提出分組的功能后考慮到組應支持嵌套功能,即子組自動繼承父組的權限,這樣授權時就更加簡便了。
l 高性能。不能因為校驗權限而嚴重影響到系統的性能。
l 安全性。除正常途徑方式訪問系統的保護外,也需要避免通過非正常的途徑訪問系統中受保護的資源。
除了這些用戶通常直接提出的需求外,在實際的項目中通常還會有這些需求:
l 權限的排斥和包含。用戶在實際的使用后通常會提出這個需求,權限的排斥主要是指當用戶擁有權限A時則不能同時再擁有權限B,這個在實現了權限繼承的系統中尤為突出;權限的包含主要指當用戶擁有權限A時自動擁有了權限B,實際的例子是當用戶擁有管理權限時自動同時擁有訪問權限。
l 系統資源權限的繼承。在對帶有分級性質的資源進行授權時子資源自動繼承父資源的權限,這個在文檔管理類型的系統中比較常見,即目錄中的文檔自動擁有目錄的權限。
l 系統資源權限的多種授予對象。通常系統的權限是授予到角色中,而對于系統資源的權限授予上用戶在使用后通常會提出需要授予到多種對象,除角色之外還需可授予給組織機構或者具體的用戶。
3.2. 分析
對需求中列出的場景進行分析:
l 上下文
未登錄用戶、登錄用戶、管理用戶不同的界面等情況。
l 問題
如何識別是否為登錄用戶、管理用戶或未登錄用戶。
l 解決方案
提供身份認證功能,通過此功能標識用戶身份。
l 上下文
根據用戶擁有的權限顯示相應的菜單,在具體菜單對應的模塊里根據用戶的權限顯示相應權限的按鈕。
l 問題
由于菜單或者按鈕都是通過觸發鏈接或命令的方式來實現其功能,那么在權限系統中需要做到的即可通過判斷用戶是否具有執行此鏈接或命令的權限來實現對于菜單和按鈕的顯示的控制。
這樣帶來的問題就是如何判斷用戶是否擁有執行某鏈接或命令的權限以及如何根據此結果去隱藏菜單和按鈕的顯示。
l 解決方案
提供校驗用戶是否擁有執行某鏈接和命令的權限的功能。
提供控制菜單、按鈕顯示的功能。
l 上下文
顯示當前用戶可訪問的相應的資源,有兩種情況,一種是全部顯示,一種是分頁顯示。
l 問題
如何判斷用戶可訪問哪些資源,資源如何進行分頁處理。
l 解決方案
提供獲取用戶權限范圍內的資源的功能,并提供全部獲取和分頁獲取兩種方式。
l 上下文
簡便的授權方式。
l 問題
為提升用戶授權的簡便性,將權限授予給角色或組,用戶只需要屬于這個角色或組即可擁有相應的權限。
如何建立滿足需求的授權模型。
l 解決方案
根據需求建立相應的授權模型。
根據對需求的分析,可以得出權限系統需要做到如下的功能:
l 用戶身份認證。
l 校驗用戶是否擁有執行某鏈接和命令的權限的功能。
l 控制菜單、按鈕顯示的功能。
l 獲取用戶權限范圍內的資源的功能,并提供全部獲取和分頁獲取兩種方式。
l 建立相應的授權模型。
在非功能性需求方面權限系統需要考慮如下幾個方面:
l 權限的繼承。
l 權限的排斥和包含。
l 高性能。
l 安全性。
l 系統數據的權限的繼承。
l 系統數據的多種授權對象的支持。
根據這些對權限系統的功能需求和非功能性需求,我們可以合并和歸納成如下的一個表格作為對權限系統的需求:
功能點 |
描述 |
身份認證 |
提供用戶身份認證的功能,以標識用戶是否登錄、是否為管理員等身份。 |
資源權限校驗 |
判斷操作主體是否具有對某資源進行某操作的權限。 |
數據權限校驗 |
獲取用戶權限范圍內的數據的功能,并提供全部獲取和分頁獲取兩種方式。 系統數據的權限的繼承。 系統數據的多種授權對象的支持。 |
授權模型 |
系統權限的授予模型決定了權限系統使用的易用與否。 權限的繼承。 權限的排斥和包含。 |
權限校驗的體現 |
控制菜單、按鈕的顯示。 |
高性能 |
高效的授權與高效的權限校驗。 |
安全性 |
防止非法途徑對于系統受保護資源的訪問或操作。 |
posted on 2005-10-08 18:15 BlueDavy 閱讀(3347) 評論(0) 編輯 收藏 所屬分類: 系統設計