張政毅
摘 要:在.net技術(shù)如此成熟的現(xiàn)在,很多Web程序都支持用戶帳號(hào),根據(jù)不同的登錄用戶提供不同的選項(xiàng),報(bào)表等功能。此外,可能我們還想包含一些帳號(hào)留給我們自己公司用戶,以便讓它們能夠登錄并進(jìn)行產(chǎn)品信息修改,比如股價(jià),級(jí)別調(diào)整等等。本文重點(diǎn)不在如何進(jìn)行身份認(rèn)證,而在身份認(rèn)證完成后也即進(jìn)入系統(tǒng)大門(mén)后,如何保證用戶只在自己有權(quán)限的范圍內(nèi)進(jìn)行操作,而不是可以進(jìn)行任意功能的操作即基于角色的按鈕級(jí)別細(xì)粒度權(quán)限控制解決方案。
關(guān)鍵詞:.NET角色;權(quán)限控制
1 基于角色的權(quán)限控制系統(tǒng)
基于角色的權(quán)限控制系統(tǒng)RBAC(Role Based Access Control)是目前最流行,也是最通用的權(quán)限控制系統(tǒng)。在ASP.NET中我們可以通過(guò)membership來(lái)實(shí)現(xiàn)創(chuàng)建,管理,驗(yàn)證用戶帳號(hào)的標(biāo)準(zhǔn)的,可以擴(kuò)展的平臺(tái)。由于本論文是示范針對(duì)不同登錄用戶調(diào)整數(shù)據(jù)修改的能力, 并不是要凸顯使用ASP.NET 的membership,roles,和profile系統(tǒng),我們會(huì)使用一種很簡(jiǎn)單的機(jī)制來(lái)決定用戶訪問(wèn)網(wǎng)頁(yè)的這種能力。
2 利用ASP.NET中web控件實(shí)現(xiàn)權(quán)限控制的思路
大部分提供帳號(hào)的站點(diǎn)需要根據(jù)登錄用戶而定制不同的數(shù)據(jù)修改界面。管理員或許能夠刪除或編輯任何記錄,沒(méi)有管理權(quán)限的用戶可能被限制只能更新或刪除他們自己創(chuàng)建的數(shù)據(jù)。無(wú)論是哪類(lèi)情況,數(shù)據(jù)web控件,ObjectDataSource,以及業(yè)務(wù)邏輯層的類(lèi)可以用來(lái)擴(kuò)展成基于登錄用戶的添加刪除功能。
以AspxGridView為例,盡管web控件已經(jīng)有了全面的功能,但是可能它為用戶提供了太多的權(quán)限,此時(shí),我們就需要進(jìn)行權(quán)限控制。通常用戶能夠?yàn)g覽到和修改的數(shù)據(jù)有著固定的業(yè)務(wù)規(guī)則,當(dāng)不同的角色登陸時(shí),我們會(huì)在AspxGridView中隱藏掉編輯按鈕。為AspxGridView的CommandButtonInitialize事件新建一個(gè)事件處理器。在事件處理器中我們需要判斷該條數(shù)據(jù)是否的操作員和當(dāng)前登錄人員是否是同一人。我們可以通過(guò)web控件的GetValues屬性來(lái)獲得一個(gè)綁定到AspxGridView上的Row實(shí)例。如果不滿足相應(yīng)的業(yè)務(wù)規(guī)則,我們可以通過(guò)在AspxGridView的ColumnCommandButtonType中獲取一個(gè)按鈕的引用,一旦我們獲得這個(gè)引用,我們就可以隱藏或者刪除這個(gè)按鈕。代碼如下:
protected void ASPxGridView_zzxx_CommandButtonInitialize(object sender, ASPxGridViewCommandButtonEventArgs e){
string V_DQCZY = Convert.ToString(ASPxGridView_zzxx.GetRowValues(e.VisibleIndex, "CZRYBM")); //通用取gv中值
//獲取ASPXGRIDVIEW中某一行中某個(gè)單元格的值,此處是取操作員
string v_czybm = HUBU.UserFoundation.CurrentUserID;
//調(diào)用公共類(lèi),取出當(dāng)前操作員
if (V_DQCZY != v_czybm)//如果不是同一操作員,則隱藏刪除和編輯按鈕
{
if (e.ButtonType == ColumnCommandButtonType.Delete)
{
e.Visible = false;
}
if (e.ButtonType == ColumnCommandButtonType.Edit)
{
e.Visible = false;
}
}
}
3 結(jié)束語(yǔ)
科技時(shí)代,信息是企業(yè)生存的命脈,信息的安全也必然成為企業(yè)極度重視的問(wèn)題。基于角色的權(quán)限控制作為保護(hù)信息安全中的有效措施,現(xiàn)已有廣泛的運(yùn)用。與membership,roles相比,這種按鈕顆粒度的權(quán)限控制顯得更為方便和簡(jiǎn)單,且實(shí)用性強(qiáng)。
參考文獻(xiàn):
[1]管理信息系統(tǒng)中基于角色的訪問(wèn)控制[J]. 曹天杰,張永平. 計(jì)算機(jī)應(yīng)用. 2001(08)
[2]面向用戶角色的細(xì)粒度自主訪問(wèn)控制機(jī)制[J]. 魏立峰,孟凱凱,何連躍. 計(jì)算機(jī)應(yīng)用. 2009(10)
[3]基于權(quán)限訪問(wèn)的信息運(yùn)維分級(jí)安全管理[J]. 冷小潔. 農(nóng)電管理. 2017(07)endprint