摘 要:在Web應(yīng)用軟件中,權(quán)限管理是常見的功能,不同用戶具有不同的軟件使用權(quán)限,系統(tǒng)根據(jù)登錄用戶的角色來完成權(quán)限的審定,從而進(jìn)入用戶的軟件使用界面。在實(shí)際應(yīng)用中,登錄用戶的權(quán)限有時(shí)會(huì)根據(jù)實(shí)際情況發(fā)生變化,從而需要調(diào)整相應(yīng)的用戶權(quán)限,常規(guī)的權(quán)限管理無法適應(yīng)權(quán)限的動(dòng)態(tài)變化。為解決這種問題,設(shè)計(jì)了一種高效的權(quán)限管理方案,利用該方案實(shí)現(xiàn)了用戶權(quán)限的動(dòng)態(tài)管理,該設(shè)計(jì)方案已用于實(shí)際的軟件項(xiàng)目中,極大地提高了權(quán)限管理的靈活性、方便性和高效性。
關(guān)鍵詞:Web應(yīng)用軟件; 用戶權(quán)限; 動(dòng)態(tài)管理; 權(quán)限組; 權(quán)限管理方案
中圖分類號(hào):TP393.09 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)12-0047-04
Design and Accomplishment of Dynamic Authority Management Based on Web Software
ZHANG Zhi-qiang, YE An-sheng, GU Mu-song
(College of Information Science and Technology, Chengdu University, Chengdu 610106, China)
Abstract:The authority management is a rather common function in the Web applied software. Since different users possess different limits of authority, the system examines and approves a user′s limits of authority according to his role, and then allows him to enter the user interface. Sometimes the authority of the user who logins in may vary according to the actual situation, thus the user′s authority also need to be adjusted. As the common management of authority cannot adapt to the dynamic changes of authority, in order to manage the users′ authority, a more effective plan which can bring about a dynamic management of users′ authority was designed. The plan has already been applied to some practical software projects and has greatly improved the adaptability, convenience and effectiveness of the authority management.
Keywords:Web software; authority of user; dynamic management; authority group; plan of authority management
0 引 言
在Web應(yīng)用軟件中,權(quán)限管理是軟件常見的功能,不同的用戶具有不同的權(quán)限使用軟件,當(dāng)用戶登錄系統(tǒng)時(shí),系統(tǒng)會(huì)根據(jù)登錄用戶的角色確定登錄用戶的權(quán)限,根據(jù)用戶的權(quán)限進(jìn)入不同的軟件界面。在軟件的實(shí)際應(yīng)用中,有時(shí)需要改變用戶的權(quán)限,常見的權(quán)限管理一般是通過對(duì)角色的切換來完成的。角色種類與權(quán)限一般在軟件的前期設(shè)計(jì)中就已經(jīng)確定,當(dāng)角色種類與權(quán)限確定后就不容易改變,否則需要更改整個(gè)軟件的設(shè)計(jì)方案,這就是常規(guī)的角色管理,常規(guī)的角色管理無法靈活地適應(yīng)實(shí)際情況的變化。為解決該缺陷,能夠靈活地適應(yīng)權(quán)限的變化,在軟件的權(quán)限管理中需要以動(dòng)態(tài)方式管理和維護(hù)角色,從而達(dá)到動(dòng)態(tài)設(shè)置用戶權(quán)限的目的。通過動(dòng)態(tài)的權(quán)限管理,將極大地提高用戶權(quán)限的管理效率[1-3]。
1 權(quán)限組的設(shè)計(jì)
在Web軟件如科研管理系統(tǒng)中,系統(tǒng)管理員、??萍继幚蠋?、一般教師、系科研秘書、系主任等角色的權(quán)限在開發(fā)系統(tǒng)時(shí)就已確定,它們可以以不同角色的用戶登錄系統(tǒng)后進(jìn)入不同的管理界面。在實(shí)際應(yīng)用中,用戶角色可能會(huì)發(fā)生變化,例如教師可能在一般教師、系科研秘書、系主任、??蒲刑幚蠋煹炔煌巧g變動(dòng),這樣當(dāng)其角色變換后,在不改變用戶登錄帳號(hào)的情況下應(yīng)改變其權(quán)限。另外,角色種類以及角色的權(quán)限信息也可能會(huì)發(fā)生改變,需要對(duì)角色進(jìn)行新增、刪除、更新等維護(hù)操作。采用常規(guī)的角色管理方式無法適應(yīng)這種動(dòng)態(tài)變化的情況,從而使整個(gè)系統(tǒng)的權(quán)限管理效率大大降低。為了解決這些問題,設(shè)計(jì)一種類似于Windows用戶組的權(quán)限管理方案,該方案將系統(tǒng)角色作為權(quán)限組,通過對(duì)權(quán)限組的動(dòng)態(tài)管理,高效地實(shí)現(xiàn)了用戶權(quán)限的動(dòng)態(tài)管理,該方案的關(guān)鍵是對(duì)權(quán)限組的管理。
權(quán)限組管理模型如圖1所示[4]。
當(dāng)權(quán)限組創(chuàng)建完成后,每個(gè)權(quán)限組代表一種角色,對(duì)權(quán)限組的權(quán)限進(jìn)行設(shè)置后,將不同的用戶登錄帳號(hào)放入權(quán)限組中,該用戶就具有所屬權(quán)限組中的所有權(quán)限功能,當(dāng)動(dòng)態(tài)調(diào)整權(quán)限組的權(quán)限時(shí),隸屬于該權(quán)限組中的用戶權(quán)限就會(huì)自動(dòng)改變,系統(tǒng)也具有對(duì)權(quán)限組完成新增、修改與更新等維護(hù)操作的功能。通過這種方式實(shí)現(xiàn)了用戶權(quán)限的動(dòng)態(tài)管理[5]。
圖1 權(quán)限組管理模型圖
實(shí)現(xiàn)權(quán)限組管理的關(guān)鍵是權(quán)限組的權(quán)限設(shè)置,其通過權(quán)限信息串來體現(xiàn)。在系統(tǒng)中設(shè)置了很多復(fù)選框列表Checkboxlist控件,每個(gè)復(fù)選框列表控件中放置了6個(gè)Checkbox控件,每個(gè)Checkbox控件代表1個(gè)功能模塊,每個(gè)Checkboxlist表示1組功能模塊的組合,根據(jù)對(duì)控件是否選擇的判定,可以組成“1”或“0”的字符串?dāng)?shù)據(jù)作為該權(quán)限組的權(quán)限信息串,當(dāng)Checkbox控件被選則時(shí),表示為“1”,否則表示為“0”。設(shè)計(jì)界面如圖2所示。
圖2 權(quán)限組的權(quán)限信息串設(shè)置界面
有些Checkbox控件代表的是保留功能,這些保留的Checkbox控件就是擴(kuò)展功能模塊的預(yù)留接口,通過這些預(yù)留接口可以為系統(tǒng)增加新的權(quán)限功能。通過這種設(shè)計(jì),系統(tǒng)管理員可以利用控件的選擇來動(dòng)態(tài)改變權(quán)限,系統(tǒng)則可以根據(jù)控件的選擇狀態(tài)動(dòng)態(tài)構(gòu)建權(quán)限信息串,經(jīng)過加密后將其存儲(chǔ)到數(shù)據(jù)庫中,這樣不僅可以防治非法的竄改,還可以從數(shù)據(jù)庫中提取并解密還原為原始的權(quán)限信息串。
這種管理方式能夠以集合方式組織權(quán)限組的權(quán)限功能模塊,極大地提高權(quán)限管理的靈活性、方便性和高效性。權(quán)限組管理子模塊的界面如圖3所示。
在該模塊中,權(quán)限組信息是通過Gridview控件完成維護(hù)操作的,當(dāng)權(quán)限組創(chuàng)建成功后,通過對(duì)權(quán)限組的維護(hù)來調(diào)整系統(tǒng)角色及其權(quán)限信息。
權(quán)限組管理模塊功能如圖4所示。
圖3 權(quán)限組管理界面
圖4 權(quán)限組管理功能模塊圖
當(dāng)權(quán)限組創(chuàng)建完成后,設(shè)定用戶所屬的權(quán)限組,該用戶就具有設(shè)定權(quán)限組的權(quán)限功能,當(dāng)用戶登錄系統(tǒng)時(shí),系統(tǒng)首先從數(shù)據(jù)庫中讀取所屬權(quán)限組的權(quán)限信息串,然后經(jīng)過解密還原為原始的“..10..”信息串,根據(jù)信息串動(dòng)態(tài)組合不同的功能模塊并顯示對(duì)應(yīng)的功能模塊控件,進(jìn)入不同的軟件使用界面。權(quán)限組應(yīng)用的數(shù)據(jù)處理流程如圖5所示。
圖5 權(quán)限組應(yīng)用的數(shù)據(jù)處理流程
2 權(quán)限動(dòng)態(tài)管理的實(shí)現(xiàn)
本文以O(shè)racle 10g為后臺(tái)數(shù)據(jù)庫,利用ASP.NET實(shí)現(xiàn)高??蒲泄芾硐到y(tǒng)為技術(shù)平臺(tái),在該系統(tǒng)中實(shí)現(xiàn)了動(dòng)態(tài)權(quán)限的管理功能。
2.1 相關(guān)數(shù)據(jù)表的設(shè)計(jì)
權(quán)限組表如表1所示[6-7],登錄用戶表如表2所示。
表1 權(quán)限組表
字段名稱字段類型約束條件字段說明備注
right_idNumberNOT NULL權(quán)限組ID主鍵
right_nameVarchar2(64)權(quán)限組名字
rightsVarchar2(32)NOT NULL權(quán)限組的權(quán)限信息加密存儲(chǔ)
noteVarchar2(200)權(quán)限組說明信息備注信息
表2 用戶表
字段名稱字段類型約束條件字段說明備注
eidNumberNOT NULL員工ID主鍵
name Varchar2(10)NOT NULL員工姓名
login_idVarchar2(20)NOT NULL登錄名
passwordVarchar2(20)NOT NULL登錄密碼加密存儲(chǔ)
right_group_idNumberNOT NULL所屬權(quán)限組ID外鍵
……………
權(quán)限信息串經(jīng)過加密存儲(chǔ)在rights字段中,用戶表中的right_group_id字段與權(quán)限組表的right_id建立外鍵關(guān)聯(lián),確定登錄用戶所屬權(quán)限組[8]。
2.2 數(shù)據(jù)層的實(shí)現(xiàn)
為了提高操作效率,在實(shí)際開發(fā)時(shí)按照分層方式設(shè)計(jì)代碼結(jié)構(gòu),將數(shù)據(jù)庫操作的代碼封裝在數(shù)據(jù)層,在業(yè)務(wù)層完成數(shù)據(jù)層的調(diào)用[9-10]。
public class Getdata
{…//設(shè)計(jì)Getdata類完成對(duì)數(shù)據(jù)庫的各種操作
public string Get_permit(int uid) //根據(jù)權(quán)限組編號(hào)提取權(quán)限組的權(quán)限信息串
{ string permit = \"\"; //權(quán)限信息串
OracleConnection con = new
OracleConnection(ConfigurationManager.ConnectionStrings[\"DCS\"].ConnectionString); //創(chuàng)建oracle數(shù)據(jù)庫的連接對(duì)象
(DCS為在Web.config中設(shè)置的連接字符串)
string cmdstr = \"…\"; //設(shè)置獲取權(quán)限組信息串的SQL語句
OracleCommand cmd = new OracleCommand();
…
string temp = \"\";
temp = Convert.ToString(cmd.ExecuteScalar());
//從數(shù)據(jù)庫中提取權(quán)限組信息串
SymmetricMethod ke = new SymmetricMethod();
permit = ke.Decrypto(temp);//對(duì)權(quán)限信息串進(jìn)行解密還原為原始的信息串
return permit;
}
… //完成對(duì)數(shù)據(jù)庫的各種操作
}
2.3 業(yè)務(wù)層的實(shí)現(xiàn)
2.3.1 權(quán)限信息串的構(gòu)建
每種權(quán)限組的權(quán)限信息由權(quán)限信息串構(gòu)成,權(quán)限信息串的構(gòu)造是實(shí)現(xiàn)權(quán)限動(dòng)態(tài)管理的關(guān)鍵。當(dāng)權(quán)限組的權(quán)限信息串構(gòu)建完成后,可以完成權(quán)限組的添加、刪除和更新等維護(hù)操作。以下主要代碼實(shí)現(xiàn)了權(quán)限信息串的構(gòu)建:
…
string permit=\"\"; //存儲(chǔ)權(quán)限信息串
for(i = 0; i <= 5; i++) //每行6個(gè)控件(6個(gè)功能權(quán)限)的組合
{ if(CheckBoxList1.Items[i].Selected)
permit += \"1\"; elsepermit += \"0\"; }
… //進(jìn)行多行的組合,最終構(gòu)建出原始的權(quán)限信息串
SyM keyan1 = new SyM();// SyM為設(shè)置的密碼處理類
permit = keyan1.Encrypto(permit); //對(duì)構(gòu)建的權(quán)限信息串加密
這里permit為加密后的權(quán)限信息串,最后存儲(chǔ)在數(shù)據(jù)庫中。
2.3.2 權(quán)限組的驗(yàn)證
當(dāng)用戶登錄時(shí),系統(tǒng)根據(jù)登錄用戶所屬的權(quán)限組從數(shù)據(jù)庫中提取權(quán)限信息串,經(jīng)過解密還原為原始的信息串,根據(jù)信息串動(dòng)態(tài)組合權(quán)限功能模塊進(jìn)入不同的軟件使用界面。以下是主要的驗(yàn)證代碼:
Getdata keyan = new Getdata();
string permit = \"\";
permit = keyan.Get_permit(Convert.ToInt16(Session[\"eid\"].ToString()));
//Session[\"eid\"].ToString()為登錄時(shí)獲取的用戶ID,通過Get_permit從數(shù)據(jù)庫中提取該用戶的權(quán)限信息串
if(permit.Substring(0,1) == \"0\" permit.Substring(1,1) ==\"0\" …permit.Substring(5,1)== \"0\")
t2.Visible = 1;//表示t2功能模塊控件沒有權(quán)限使用
else
{ if (permit.Substring(0, 1) == \"0\")
t2_1.Visible = 1;//表示t2_1功能模塊空間沒有權(quán)限使用
…} //構(gòu)造權(quán)限功能模塊的顯示與控制問題,當(dāng)權(quán)限信息串某位為“1”時(shí)顯示對(duì)應(yīng)的功能模塊,為“0”時(shí)屏蔽對(duì)應(yīng)的功能模塊顯示
…
以系統(tǒng)管理員身份登錄系統(tǒng)的界面如圖6所示,以系科研秘書身份登錄系統(tǒng)的界面如圖7所示。
圖6 系統(tǒng)管理員界面
圖7 系科研秘書界面
3 結(jié) 語
對(duì)權(quán)限組進(jìn)行動(dòng)態(tài)管理,根據(jù)實(shí)際情況靈活地完成權(quán)限的設(shè)定,最終實(shí)現(xiàn)用戶權(quán)限的動(dòng)態(tài)管理,這種設(shè)計(jì)方案已應(yīng)用于實(shí)際的軟件項(xiàng)目運(yùn)行中,極大地提高了軟件權(quán)限管理的靈活性、方便性和高效性。
參考文獻(xiàn)
[1]周偉,王黎,高曉容.ASP.NET中用戶權(quán)限管理的設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2007(11):156-157.
[2]李雪林.基于角色的工作流模型的研究[J].電腦知識(shí)與技術(shù),2006(7):186-187.
[3]江克勤,張玉州.ASP.NET應(yīng)用程序的安全機(jī)制的研究[J].巢湖學(xué)院學(xué)報(bào),2006,8(3):16-21.
[4]楊宗凱,劉宏波,劉琴濤.基于角色的訪問控制在網(wǎng)絡(luò)教育中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用研究,2005(10)134-136.
[5]胡俊鵬,謝坤武.一種基于角色的訪問控制系統(tǒng)方案[J].湖北民族學(xué)院學(xué)報(bào),2007,25(2):217-220.
[6]昝風(fēng)彪.在ASP.NET中基于角色的權(quán)限控制設(shè)計(jì)與實(shí)現(xiàn)[J].科技信息,2008(25):84 - 85.
[7]李延偉,李筱寧.B/S中基于角色的用戶權(quán)限管理的設(shè)計(jì)與實(shí)現(xiàn)[J].福建電腦,2007(11):152-153.
[8]馬曉玉,孫巖.Oracle 10g數(shù)據(jù)庫管理應(yīng)用與開發(fā)[M].北京:清華大學(xué)出版社,2007.
[9]張英男,高喆.ASP.NET 2.0網(wǎng)絡(luò)編程[M].北京:電子工業(yè)出版社,2008.
[10][美]GLENN JOHNSON.ADO.NET 2.0高級(jí)編程[M].段超,譯.北京:清華大學(xué)出版社,2006.
[11]蒲玄及,楊百龍,楊建飛.基于ASP.NET的在線考試系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J] .現(xiàn)代電子技術(shù),2008,31(22):59-61.
[12]王倩,王偉.基于ASP.NET的數(shù)據(jù)遷移方法[J] .現(xiàn)代電子技術(shù),2008,31(18):71-73.
[13]席生長,胡宏濤. 基于ASP.NET的數(shù)據(jù)驗(yàn)證技術(shù)研究[J] .現(xiàn)代電子技術(shù),2007,30(23):97-99.