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