摘 要:實現(xiàn)MIS系統(tǒng)權(quán)限控制的方法有很多,本文介紹一種便捷、高效、安全的方法。首先,基于ADO.NET數(shù)據(jù)庫技術(shù)讀取用戶角色信息。其次,利用Split函數(shù)按照給定的字符分隔符返回用戶角色字符串?dāng)?shù)組并借助foreach語句循環(huán)遍歷數(shù)組。最后,運用Switch判斷語句動態(tài)分配和綁定用戶角色,進而實現(xiàn)權(quán)限控制。
關(guān)鍵詞:.NET平臺;MIS;權(quán)限控制
中圖分類號:TP311.52
通常情況下,信息系統(tǒng)的安全性包括以下兩個方面:一是系統(tǒng)級(System)的數(shù)據(jù)庫安全管理,這種安全管理是由數(shù)據(jù)庫支撐系統(tǒng)來保障的。二是應(yīng)用級(Application)安全管理,它主要取決于應(yīng)用系統(tǒng)自身的設(shè)計。
一般來講,信息系統(tǒng)中權(quán)限管理的實現(xiàn)模型大都是基于角色控制模型即創(chuàng)建一系列的角色,然后把基本權(quán)限單位分配給這些角色,再把角色賦予系統(tǒng)用戶,這樣在用戶登錄系統(tǒng)后,就根據(jù)當(dāng)前用戶所擁有的角色定位出相應(yīng)的權(quán)限,進而實現(xiàn)不同的功能。
本文闡述的是一種基于.NET平臺Web頁面的權(quán)限控制。
1 .NET平臺的簡介
.NET Framework是Microsoft為開發(fā)應(yīng)用程序而創(chuàng)建的一個富有革命性的新平臺。它以良好的兼容性、友好性、靈活性等特點使其成為了當(dāng)今主流的軟件開發(fā)平臺。
2 Split函數(shù)和Switch語句的介紹
Split函數(shù)是按照給定的字符分隔符將實例字符串分離,同時返回一個字符串?dāng)?shù)組。其語法如下:String[] Split(Char[])其中,參數(shù)為分隔字符串的分隔符數(shù)組,返回值為字符串?dāng)?shù)組.
Switch語句是一個控制語句,它通過將控制數(shù)值傳遞給其體內(nèi)的Case語句來處理多個選擇和枚舉,控制數(shù)值傳遞給與條件值匹配的Case語句且Switch語句可以包括任意數(shù)目的Case語句,但是任何兩個Case語句都不能具有相同的值。另外,程序從選定的語句開始執(zhí)行,直到Break將控制數(shù)值傳遞到Case體以外,如果沒有任何Case表達式與控制數(shù)值匹配,則控制數(shù)值傳遞給跟在可選Default標(biāo)簽后的語句,如果沒有Default標(biāo)簽,則控制數(shù)值傳遞到Switch以外。
3 權(quán)限控制的實現(xiàn)過程
權(quán)限控制的實現(xiàn)過程主要分為五個步驟,流程框圖如圖1所示:
圖1 權(quán)限控制流程框圖
3.1 利用ADO.NET數(shù)據(jù)庫訪問技術(shù)讀取用戶角色信息。隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)信息量的不斷增加,數(shù)據(jù)庫訪問技術(shù)越來越受到大家的關(guān)注,其中,ADO.NET數(shù)據(jù)庫訪問技術(shù)便是其中的一種,它的實現(xiàn)過程大致分為以下5個步驟。首先,通過using System.Data.SqlClient語句引入數(shù)據(jù)庫命名空間。其次,利用System.Web.Configuration.WebConfigurationManager.AppSettings[\"str\"]語句連接數(shù)據(jù)庫。然后,新建一個SqlConnection對象并使用Open()語句打開數(shù)據(jù)庫連接。另外,新建一個SqlCommand對象,用來對數(shù)據(jù)源執(zhí)行查詢、添加、刪除和修改等操作。接著,再新建一個SqlDataReader對象,利用SqlCommand對象的ExecuteReader()方法返回只讀的數(shù)據(jù)流。最后,利用readadmin.GetValue(num)語句讀取用戶角色信息。
3.2 應(yīng)用Split函數(shù)返回一個角色字符串?dāng)?shù)組。當(dāng)使用ADO.NET數(shù)據(jù)庫訪問技術(shù)讀取用戶角色信息后,接著應(yīng)按照給定的字符分隔符將用戶角色字符串分離,返回一個用戶角色字符串?dāng)?shù)組。關(guān)鍵代碼如下:
string[] splitjuese = Session[\"smryqx\"].ToString().Trim().Split(new Char[] { ';'});其中Session[\"smryqx\"]變量存放的是用戶角色信息。
3.3 使用Foreach循環(huán)語句遍歷角色字符串?dāng)?shù)組。將用戶角色字符串分離成字符串?dāng)?shù)組后,接著就需要利用Foreach循環(huán)語句遍歷角色字符串?dāng)?shù)組,以便后續(xù)Switch語句進行匹配。關(guān)鍵代碼如下:
foreach(string s in splitjuese){程序執(zhí)行體};
其中,splitjuese參數(shù)為字符串?dāng)?shù)組名詞。
3.4 利用Switch語句按需分配角色字符串。將從字符串?dāng)?shù)組中分離出來的角色字符串與Switch語句中的Case值進行匹配,然后執(zhí)行相關(guān)的代碼塊。關(guān)鍵代碼如下:
switch (s)
{
case \"用戶角色1\":
//執(zhí)行代碼;
break;
case \"用戶角色2\":
//執(zhí)行代碼;
break;
case \"用戶角色3\":
//執(zhí)行代碼;
break;
case \"用戶角色n\":
//執(zhí)行代碼;
break;}
3.5 利用組件的顯示或隱藏屬性實現(xiàn)頁面的權(quán)限控制。當(dāng)用戶角色與Switch語句中的Case值完成匹配后,接著就需要在Case代碼塊中利用組件的Visible屬性即顯示或隱藏來實現(xiàn)頁面的權(quán)限控制。其關(guān)鍵代碼如下:
Panel1.Visible = true/1;其中Panel1為數(shù)據(jù)顯示控件。
4 結(jié)束語
信息管理系統(tǒng)中的權(quán)限控制問題涉及的技術(shù)面較廣,實現(xiàn)的途徑也有多種,如何更方便、更安全、更快捷的實現(xiàn)其功能,是一個有必要探討的問題。本文采用的是基于.Net平臺ADO.NET數(shù)據(jù)庫技術(shù)、Split函數(shù)、foreach循環(huán)語句、Switch判斷語句和組件Visible 屬性的搭配組合來實現(xiàn)頁面的權(quán)限控制。作者在MIS系統(tǒng)的設(shè)計開發(fā)過程中將此方案進行了應(yīng)用和驗證,事實表明該方案安全、可靠且容易實現(xiàn),對于權(quán)限控制復(fù)雜度不高的MIS系統(tǒng)足以支撐,實踐證明該方案是權(quán)限控制實現(xiàn)的最佳選擇之一。
參考文獻:
[1]韓朝軍,梁冰,劉嬰等,SQL Server管理與開發(fā)技術(shù)大權(quán)[M].北京:人民郵電出版社,2007.
作者簡介:陳代勝,男,土家族,湖北恩施人,主管,工程師,碩士,研究方向:軟件開發(fā)。
作者單位:中航工業(yè)航空動力機械研究所,湖南株洲 412002