湯俊蘭++潘永才++汪磊


摘 要:權限管理作為信息管理系統中必不可少的一部分,已經受到越來越多的人重視。文中主要對權限管理的基本概念以及實現方法做了概要介紹,并結合作者在畢節煤炭稅源專業化管理平臺系統開發過程中的實際應用做了詳細說明。
關鍵詞:ODAC;用戶管理;角色管理;站點地圖;權限管理
中圖分類號:TP391 文獻標識碼:A 文章編號:2095-1302(2016)12-00-02
0 引 言
隨著信息化的不斷發展,基于Web的信息管理系統越來越普及。B/S體系結構因其可擴展性好、維護簡便、成本較低、適用范圍廣,被大量應用于各種信息管理系統,是當今主流的發展方向。為了保證數據的安全性,應防止非法用戶進入系統獲取數據或修改數據,控制合法用戶的訪問權限。權限管理作為信息管理系統的重要組成部分,有效實現了對系統用戶的權限控制。權限管理一般指根據系統設置的安全規則或者安全策略,用戶可以訪問而且只能訪問自己被授權的資源。
目前,實現權限管理的安全策略主要有自主訪問控制(DAC)、強制訪問控制(MAC)以及基于角色的訪問控制(RBAC)三種方式。由于DAC的控制策略安全級別低,主體的權限過大,容易導致安全問題,而MAC的規則嚴苛,應用領域窄,因此目前應用最為廣泛的是RBAC。該策略在用戶與權限之間引入了角色的概念,將不同的崗位和工作職責創建成相應的角色,并為每個角色授予所需的操作權限,然后根據用戶的不同職能授予其不同的角色。用戶可根據角色獲取不同的權限,對相應的系統資源進行操作。該設計模式在很大程度上降低了權限管理的復雜度,減少了管理成本。例如當一個應用系統有m個用戶,且每個用戶都要獲得相同的n個操作權限,那么管理員為這些用戶授權的方式有以下兩種:
(1)直接給每個用戶授予權限,需要m×n次操作;
(2)創建一個可以同時擁有n個權限的角色,將這n個權限授予該角色,然后將該角色分別授予m個用戶,共計需要m+n次操作。
顯而易見,第二種方法更為高效,當m和n的值越大,這兩種方法的操作成本差距越大。由于RBAC更節約用戶權限管理的成本,本文主要在基于角色的安全訪問控制的基礎上探討如何使用ODAC實現權限管理。
1 ODAC技術概述
ODAC(Oracle Data Access Components,ODAC)是一種用來存取Oracle關系數據庫系統的非可視化組件。ODAC使用Oracle Call Interface (OCI)可使編譯生成的應用程序非常小。此外,ODAC的Net選項支持無需在客戶機上安裝Oracle客戶端即可連接到Oracle。因此只需要TCP/IP協議的支持即可運行使用 ODAC Net應用程序。ODAC的對象模型如圖1所示。
2 使用ODAC實現權限管理
2.1 用戶權限管理
實現應用系統的權限管理必須先實現用戶管理和角色管理。用戶管理即對需要進入系統用戶的基本信息進行增、刪、改、查操作。用戶登錄、連接數據庫查找是否存在用戶信息,若存在,則對用戶信息進行驗證,判斷其用戶名、密碼是否正確,從而判定該用戶是否可以成功登錄。用戶與角色之間緊密聯系,一個用戶可以擁有多個角色,一個角色也可以賦給多個用戶,他們之間是多對多的關系,如圖2所示。
用戶登錄系統后,通過獲取到的用戶名查找該用戶所對應的角色。角色可以看成是具有特定權限的用戶集合,一個角色可以被賦予多個權限,一個權限也可以分屬不同的角色,他們之間也是多對多的關系,如圖3所示。
用戶權限管理主要解決兩個任務,即身份驗證和使用權限。身份驗證即確定訪問網站的用戶身份,解決“用戶是誰”的問題,相當于用戶管理。使用權限即在用戶身份確定之后,授予他一定的權限,允許他使用特定的服務解決“用戶能干什么”的問題,相當于角色管理。
2.2 使用ODAC與XML文件實現權限管理
由于ODAC相當于一個訪問Oracle數據庫的客戶端,開發過程中可選用ODAC連接數據庫。權限管理主要依靠TreeView與TreeList,并結合對應的XML文件實現。用戶登錄系統后,獲取該用戶所對應的角色并存放于數組。然后逐個掃描各節點的訪問權限,并與數組中存放的角色信息逐一比對,若符合要求即可訪問,否則系統提示“無訪問權限”。部分代碼實現如下:
public void VistTree(TreeNodeCollection ns)
{
if (ns.Count == 0)
return;
if (Page.User.Identity.IsAuthenticated)
{
string[] rs = HS.UserFoundation.GetRoleName(HS.UserFoundation.getUserName
(Page.User.Identity.Name.ToString()));
foreach (TreeNode nd in ns)
{
string info = null;
if ((nd.Text.Length > 0) && (nd.NavigateUrl.Length > 0))
{
if (rs.Length > 0)
{
string role = nd.Value.ToString();
if (role != null && role.Length > 2)
{
bool isPermission = false;
for (int i = 0; i < rs.Length; i++)
{
if (role == "所有人")
{
isPermission = true;
break;
}
else
{
if (role.Contains("ALL" + rs[i] + "ALL"))
{
isPermission = true;
break;
}
else
{
info = info + "【" + role.Replace("ALL"," ") + "】 "; }
}
}
if (!isPermission)
{
nd.NavigateUrl = "#";
nd.ImageUrl = "~/images/false116.gif";
nd.ToolTip ="無權限訪問該頁面。";
nd.Target = "_self";
}
}
}
}
}
}
return;
}
2.3 ODAC結合站點地圖實現權限管理
站點地圖又稱為網站地圖,是指當頁面較多時,可以方便的知道當前所在位置,類似于普通地圖,標示出當前位置。站點地圖能夠以頁面形式展示給用戶,頁面中列出網站的整體結構,放置了網站上所有頁面的鏈接,方便用戶找到自己想要獲取的信息。
使用ODAC結合站點地圖實現權限管理的具體方法如下:
(1)首先執行Membership腳本。在安裝ODAC之后會生成InstallAllOracleASPNETProviders.sql,執行該腳本即可。
(2)添加4.0版本的oracle.web.dll引用,并修改web.config,配置連接字符串、配置Membership、配置RoleManager、配置SiteMap、配置Profile等相關參數即可。
(3)靈活應用Memu控件和配置文件實現對應于不同用戶的不同導航菜單。其中,siteMap的具體配置如下所示:
type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="~/Web.sitemap"/>
3 結 語
本文采用ODAC作為連接Oracle數據庫的客戶端,通過結合XML文件以及結合站點地圖的方式實現權限管理。目前,更多的人采用結合站點地圖的方式實現該功能。權限管理的正確實現以及高效工作為應用系統尤其是信息管理應用系統提供了安全保障。
參考文獻
[1]鄭歆.權限管理在成績管理系統中的設計與實現[J].寧德師范學院學報(自然科學版),2015,27(4):444-448.
[2]唐小新.用ODAC技術實現MELINETSII數據導出的開發[J].現代圖書情報技術,2008(11):86-89.
[3]彭耘,張立平.通用權限管理系統設計與實現[J].教育教學論壇,2014(25):154-155.
[4]華英.通用權限管理系統的研究與實現[J].科技風,2015(22):82.
[5]劉麗欽.通用、動態權限管理模型的設計與實現[J].軟件,2016,37(3):94-98.
[6]吉東,崔忠偉,馬虹.基于Web的高校團委信息管理系統設計與實現[J].物聯網技術,2016,6(10):112-113.
[7]婁帥.基于達夢數據庫增強型權限管理機制的研究[D].武漢:華中科技大學,2011.
[8]邱偉.基于MVC+ORACLE+ODAC的公司業務數據管理系統[D]. 青島:青島理工大學,2015.