梁瑞仕+馬慧+楊亮+肖濤
摘 要:成員資格管理是Web系統(tǒng)開發(fā)過程中極其重要的問題,是保證系統(tǒng)安全性的重要手段。成員資格管理主要包括用戶和角色定義、用戶驗證和授權(quán)等內(nèi)容。研究了基于ASP.NET的成員資格管理框架體系,給出了典型的編程范例,并從課堂教學角度出發(fā),設計了一套基于類比法的教學方法及案例,適用于各級院校和培訓機構(gòu)的現(xiàn)場教學使用。
關(guān)鍵詞關(guān)鍵詞:ASP.NET;Web應用系統(tǒng)安全;成員資格管理;類比教學法
DOIDOI:10.11907/rjdk.161715
中圖分類號:G434
文獻標識碼:A 文章編號:1672-7800(2016)008-0186-03
0 引言
保證系統(tǒng)安全性是Web應用開發(fā)過程中的核心問題,而系統(tǒng)安全的關(guān)鍵問題是用戶及其權(quán)限控制,通常稱為成員資格管理(Membership Management),主要包括用戶和角色定義、用戶驗證和授權(quán)等。
ASP.NET是由微軟公司推出并被廣泛運用于工業(yè)界的Web開發(fā)技術(shù)[1,2],它在用戶及安全管理方面有完整的解決方案。盡管工業(yè)界和學術(shù)界對于相關(guān)方面的論述[3,4],以及關(guān)于ASP.NET教學研究方面的文獻非常多[5],但很多材料容易陷入技術(shù)細節(jié)的闡述而忽略了對框架體系整體的介紹,不便于課堂教學使用。本文將從框架全貌的角度出發(fā)對基于ASP.NET的成員資格管理框架進行介紹和總結(jié),并編寫了典型的編程范例。為了提高課堂教學效果,研究和借鑒了基于類比法的教學方法[6],并設計了用于理解成員資格管理核心概念的“訪問大學校園”類比教學案例。
1 基于ASP.NET的成員資格管理框架結(jié)構(gòu)
ASP.NET技術(shù)為實現(xiàn)成員資格管理提供了一整套解決方案,包括3個層級的技術(shù)方案(見圖1)。位于底層的是數(shù)據(jù)庫系統(tǒng)(默認數(shù)據(jù)庫名稱為aspnetdb),可實現(xiàn)對成員資格數(shù)據(jù)進行持久化存儲,包括用戶信息、角色信息、用戶偏好、登陸信息等;位于中間層的是.NET基礎類庫,主要是位于System.Web.Security 命名空間下的各種類和委托等,包括Membership、Roles、FormsAuthentication類等,提供包括新增/刪除/修改用戶和角色、表單驗證等功能;位于上層的則是提供給開發(fā)者和管理員的幾種工具,包括網(wǎng)站管理工具、網(wǎng)站配置文件、登陸系列控件、高級程序設計,用于在系統(tǒng)開發(fā)和管理過程中實現(xiàn)具體的成員資格管理任務。其中前2種工具以可視化向?qū)Х绞教峁┮恍┗镜木W(wǎng)站安全管理工具,主要面向網(wǎng)站管理員;后2種則通過可視化設計和手動編程方式實現(xiàn)完備的成員資格管理,主要面向Web系統(tǒng)開發(fā)者。
網(wǎng)站管理工具適合網(wǎng)站管理員在服務器后臺小批量地添加用戶和角色,創(chuàng)建網(wǎng)站訪問規(guī)則,如為Web系統(tǒng)添加二級管理員、網(wǎng)站角色等,如圖2所示。
網(wǎng)站配置文件用于保存網(wǎng)站的驗證、授權(quán)、數(shù)據(jù)庫連接字符串等基本信息。例如,為了實現(xiàn)Forms身份驗證,在配置文件的
以上語句實現(xiàn)了對網(wǎng)站的forms身份驗證,當驗證通過時跳轉(zhuǎn)至默認主頁,當驗證不通過時跳轉(zhuǎn)至登錄頁面。
為了實現(xiàn)對網(wǎng)站根目錄的授權(quán)配置,在網(wǎng)站根目錄配置文件的
以上配置語句使Web系統(tǒng)啟用了角色功能,并實現(xiàn)了對網(wǎng)站根目錄的授權(quán),即拒絕匿名用戶訪問,而運行管理員角色訪問。
2 典型編程范例
本節(jié)展示了成員資格管理的典型操作和編程范例,此處選取注冊用戶、用戶登錄、用戶身份驗證等3個典型操作進行說明。
2.1 注冊用戶典型代碼
用戶注冊功能幾乎是每個Web系統(tǒng)的必備功能。ASP.NET提供了CreateUserWizard控件幫助開發(fā)者快速搭建登錄界面,并內(nèi)置默認登錄邏輯,幫助開發(fā)者提高開發(fā)效率。當然,對于大部分網(wǎng)站而言,該控件及內(nèi)置登錄邏輯有時并不能很好地滿足Web系統(tǒng)的個性化需求。因此,本節(jié)重點介紹了ASP.NET提供的注冊用戶相關(guān)功能類庫和典型使用方法。
注冊用戶過程需要用戶在Web頁面輸入各種所需的注冊信息,然后將注冊信息傳入底層數(shù)據(jù)庫進行身份判斷,進而拒絕用戶注冊或完成用戶注冊過程。典型代碼如下:
string username = "abc",password = "123abcd~";//此處表示用戶輸入的用戶名和密碼
string email = "abc@abc.com",passwordQuestion = "abc",passwordAnswer = "abc";//此處表示注冊信息
MembershipCreateStatus status; //用于函數(shù)的輸出參數(shù),不需賦值,指示用戶創(chuàng)建失敗原因
MembershipUser user = Membership.GetUser(username); //從數(shù)據(jù)庫中讀取username的數(shù)據(jù)
if (user == null) //如果用戶不存在
{
/*如果:①用戶名或密碼不符合網(wǎng)站要求;②網(wǎng)站要求提供Email、密碼問題和答案等信息,但調(diào)用函數(shù)時未提供或不符合要求,以上情形都會引發(fā)異常。編程實踐中最好將以下代碼放入try-catch塊中*/
user = Membership.CreateUser(username,password,email,passwordQuestion,passwordAnswer,true,out status);
if (user != null)
Response.Write("");
}
else
Response.Write("")
2.2 用戶登錄及驗證典型代碼
用戶登陸過程中經(jīng)常涉及2個過程:驗證和跳轉(zhuǎn)。驗證過程是將輸入的用戶名和密碼傳入底層數(shù)據(jù)庫,由ASP.NET自動去aspnetdb數(shù)據(jù)庫進行身份驗證。根據(jù)驗證結(jié)果,將確定將用戶轉(zhuǎn)入何種功能頁面,驗證成功后則將用戶轉(zhuǎn)入相關(guān)頁面。典型的用戶登錄和驗證代碼如下:
string username = "abc",password = "123abcd~";//此處表示用戶輸入的用戶名和密碼
bool isValidUser = Membership.ValidateUser(username,password);//執(zhí)行身份驗證
if(isValidUser) //驗證通過,表示是合法存在的用戶
{
//跳轉(zhuǎn)回到上次的頁面或登陸頁面,將用戶名存儲在cookie中
FormsAuthentication.RedirectFromLoginPage(username,true);
}
2.3 創(chuàng)建角色及添加用戶到角色典型代碼
角色的目的是便于系統(tǒng)對于大量用戶提前進行分類和管理,以提高用戶和授權(quán)管理效率。ASP.NET提供了非常便利的角色和用戶管理類庫,角色和用戶均以字符串形式名稱表示,非常方便開發(fā)者理解和使用。以下是創(chuàng)建角色以及將用戶添加到角色中的典型代碼演示:
string taRole = "Teacher",stRole = "Student";//此處的Teacher、Student表示角色名稱
string taUser = "Larry Page";//此處的Larry Page表示具體的用戶名稱
string[]stUsers = new string[]{ "Mei H.","Lei L." };//此處Mei H.,Lei L.表示具體的用戶名稱
//創(chuàng)建兩種新角色
Roles.CreateRole(taRole);
Roles.CreateRole(stRole);
Roles.AddUserToRole(taUser,taRole);//添加單個用戶到角色中
Roles.AddUsersToRole(stUsers,stRole);//添加多個用戶到角色中
3 基于類比法的教學方法及案例研究
對于一個Web應用系統(tǒng),通常由很多功能模塊及其相應資源組成,供各種網(wǎng)站成員有限制地訪問并提供服務。因此,Web應用系統(tǒng)的安全管理可以直觀地理解為針對不同網(wǎng)站成員,設計不同權(quán)限,提供特定的網(wǎng)站服務。為了在課堂教學過程中使學生快速、準確、完整地理解成員資格中的“驗證”和“授權(quán)”2個核心概念,引入了類比教學法,并設計了一套貼近現(xiàn)實生活的“訪問大學校園”的典型教學案例。
在一個典型的大學校園,有公共教學樓、圖書館、宿舍樓、實驗室等,這些場所由于涉及公共設備或師生的私人財產(chǎn),都有嚴格的出入條件,如圖書館只能允許持有校園卡的師生進入,宿舍樓只允許居住本棟的學生刷卡進出等。此外還有門衛(wèi)保安專人把守的大學校門,負責維持出入校門的秩序并進行登記管理。比如,任何人都應出示合法證件進入校園,對于非本校師生還要進行額外的身份登記。實際上,大學校園相當于一個典型的Web系統(tǒng),各種場所及其設施則相當于Web系統(tǒng)的多種功能模塊及資源,對這些功能模塊及資源都有其自身的權(quán)限要求,如后臺系統(tǒng)一般只允許授權(quán)管理員訪問和登陸等。
以上關(guān)于大學校園的安全管理可引出2個重要概念:驗證和授權(quán)。校門衛(wèi)會對出入校園的行人進行身份核實,符合條件的行人可放行進入校園,不符合條件且無法提供合理身份證明的行人將被拒絕進入,這便是驗證過程。一旦驗證通過,行人便成為合法用戶進入校園,理論上就具備了使用校園設施的前提條件。接下來,這些合法用戶可進入校園的公共操場、花園等場所,一般這些地方都開放給任何進入校園的人使用。但有些場所,如圖書館、教學樓、實驗室等,需要用戶有相應權(quán)限之后才可進入,這便是授權(quán)過程。因此,學校會分配給教職工、學生、校友等不同的功能卡,以便其具有不同的權(quán)限進入相應場所,這種“授權(quán)”操作實現(xiàn)了對校園設施的安全管理。實際上,Web系統(tǒng)的功能模塊及其資源的使用也同樣存在驗證和授權(quán)過程。對每個登錄Web系統(tǒng)的用戶,系統(tǒng)均會驗證身份以確定其是否有資格訪問系統(tǒng),然后對驗證通過的合法用戶,根據(jù)其授予的權(quán)限,給予相應功能模塊及資源的訪問資格,以達到系統(tǒng)安全管理的目的。
當然,由于大學校園的師生眾多,為了便于管理,會將師生分類以角色的形式表現(xiàn),可大致分為幾種角色:教師、學生、職工、管理員等,從而使對大量用戶的授權(quán)管理簡化為對幾種角色的管理。實際上,Web系統(tǒng)也同樣運用了角色的概念,授權(quán)首先是針對角色進行,每種角色均有對應權(quán)限。對于任何用戶,均可為其分配一種或多種角色,于是便相應地授予該用戶一種或多種權(quán)限。
本案例已成功運用于本科教學課堂當中,每位教師只需進行簡單的學習培訓便可掌握教學要點,而學生能在課堂學習過程中非常容易地理解成員資格管理中的核心概念,有助于其下一步學習相關(guān)的理論知識和編程技巧。
4 結(jié)語
本文討論了基于ASP.NET的成員資格管理框架,給出了成員資格管理的框架體系結(jié)構(gòu)圖,介紹了各個層次的特點,并給出了典型的編程案例。ASP.NET的用戶和角色管理功能完善,且提供了便利的登陸控件及完整的類庫供開發(fā)者使用,能滿足大部分Web系統(tǒng)的開發(fā)需求。此外,本文提出了基于類比法的教學思路和案例,并在本科教學課堂中進行運用。實踐表明,該教學方法可起到良好的教學效果。
參考文獻:
[1]IMAR SPAANJAARS.Beginning ASP.NET 4.5:in C# and VB[M].Wiley,2012.
[2]沈士根,汪承焱,許小東.Web程序設計——ASP.NET使用網(wǎng)站開發(fā)[M].第2版.北京:清華大學出版社,2014.
[3]楊旺明.基于Asp.Net的權(quán)限系統(tǒng)的設計與實現(xiàn)[J].計算機與數(shù)字工程,2014(3):482-485.
[4]趙強,張紅忠.基于ASP.NET的網(wǎng)站系統(tǒng)安全性設計與實現(xiàn)[J].計算機應用,2008(S2):271-273,279.
[5]楊亞菁.以項目實踐為導向的ASP.NET課程層次化教學研究[J].軟件導刊,2016,15(1):186-187.
[6]梁瑞仕,曾荔枝,楊亮.類比教學法在本科計算機算法課程中的探索與實踐[J].現(xiàn)代計算機,2013(8):46-47.
(責任編輯:黃 ?。?