標(biāo)識(shí)權(quán)限
因?yàn)楹笈_(tái)的訪問(wèn)控制都是基于Action級(jí)別 的控制,而我們使用系統(tǒng)都是以功能模塊為最小單位的控制,所以我們首先需要建立一個(gè)Action和功能塊的對(duì)應(yīng)關(guān)系,如:“創(chuàng)建用戶”功能對(duì)應(yīng)的Action是“Create”。由于開發(fā)人員的差異有時(shí)候這種對(duì)應(yīng)的關(guān)系很難得到保證。應(yīng)該避免一個(gè)Action操作多種功能,這對(duì)與基于Action級(jí)別的訪問(wèn)控制不利。一般不存在一個(gè)操作對(duì)應(yīng)多個(gè)Action。這樣我們建立的Action和功能映射表就是一一對(duì)應(yīng)的了,完全可以使用Controler+Action的名稱來(lái)作為功能的權(quán)限標(biāo)識(shí),但是我們經(jīng)常有出現(xiàn)重載的Action在GET和POST請(qǐng)求中,所以我們最終使用Controler+Action+RequestType。
接下來(lái),我們需要將角色和功能關(guān)聯(lián)起來(lái)。這樣在權(quán)限樹中,我們以中文描述,實(shí)際以其權(quán)限標(biāo)識(shí)和角色標(biāo)識(shí)關(guān)聯(lián)起來(lái)。
數(shù)據(jù)庫(kù)設(shè)計(jì)
流程圖:
后臺(tái)訪問(wèn)控制
在首次驗(yàn)證用戶名和密碼時(shí),應(yīng)該將該用戶所有的角色的權(quán)限的標(biāo)識(shí)無(wú)重復(fù)的存儲(chǔ)在該用戶的Session中。有時(shí)候?yàn)榱吮苊舛啾聿樵儙?lái)的性能問(wèn)題,我們可以在用戶表中冗余的存儲(chǔ)其所有的權(quán)限標(biāo)識(shí)。
我們將所有需要權(quán)限的Action都使用擴(kuò)展了過(guò)濾器的的屬性標(biāo)識(shí),這樣在執(zhí)行Action之前就會(huì)驗(yàn)證用戶的權(quán)限,通過(guò)獲取用戶當(dāng)前訪問(wèn)的Controler和Action名,查找保存到用戶Session中的權(quán)限標(biāo)識(shí)集合就可以確定其是否有訪問(wèn)權(quán)限了。
視圖訪問(wèn)控制
我們雖然在后臺(tái)功能訪問(wèn)上做了決定性限制,但為了用戶體驗(yàn)度,我們還需要控制視圖級(jí)的功能顯示和隱藏,用戶沒(méi)有 權(quán)限的功能塊,不應(yīng)該顯示在當(dāng)前用戶視圖中。這個(gè)在MVC中,只能通過(guò)在視圖中寫if...else...來(lái)判斷了。至于判斷的條件還是功能的“權(quán)限標(biāo)識(shí)”,看當(dāng)前用戶Session權(quán)限標(biāo)識(shí)集合中是否存在即可。
身份驗(yàn)證-雙證模式
參見(jiàn)“雙證模式”。
票證:我們?cè)O(shè)計(jì)一個(gè)獨(dú)立票證發(fā)放類,提供簡(jiǎn)單和安全兩種票證生成方法,簡(jiǎn)單票證可以易于受到“會(huì)話劫持”攻擊,但生成效率高,使用GUID即可。使用安全票證,就是將變數(shù)大的隨機(jī)信息,如用戶瀏覽器和IP、時(shí)間、隨機(jī)數(shù)等信息作為產(chǎn)生票證的參數(shù),同時(shí)在服務(wù)端Session中保存其瀏覽器、IP等客戶端信息,以便核對(duì)用戶的瀏覽器和IP信息是否一致,如果不一致說(shuō)明此請(qǐng)求為黑客“會(huì)話劫持攻擊”行為。
密碼加密:使用標(biāo)準(zhǔn)的MD5加密策略,MD5“雪崩效應(yīng)”高,且不可解密。只有在極端情況下使用超級(jí)計(jì)算機(jī)通過(guò)“碰撞”才能解密。普通計(jì)算機(jī)幾乎不可能產(chǎn)生有效碰撞。(更正:2005年王曉云教授已使用普通微機(jī)就能在短時(shí)間內(nèi)產(chǎn)生一個(gè)有效碰撞。估計(jì)可以使用SHA-2了。)
為提高性能,以上兩個(gè)類使用“單例模式”。
編輯:hfy
-
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3929瀏覽量
66304 -
MVC
+關(guān)注
關(guān)注
0文章
73瀏覽量
14142
發(fā)布評(píng)論請(qǐng)先 登錄
無(wú)線身份驗(yàn)證的門禁控制系統(tǒng)設(shè)計(jì)方案
facexx人臉識(shí)別身份驗(yàn)證迎來(lái)新技術(shù)革新
Vivado和SDK身份驗(yàn)證錯(cuò)誤
PN5180無(wú)法使用mifare classic進(jìn)行身份驗(yàn)證怎么解決?
如何使用TapLinx針對(duì)Ultralight C進(jìn)行身份驗(yàn)證?
什么是身份驗(yàn)證和授權(quán)
什么是詢問(wèn)握手身份驗(yàn)證協(xié)議
什么是密碼身份驗(yàn)證協(xié)議
身份驗(yàn)證和生物識(shí)別身份系統(tǒng)應(yīng)用越加廣泛
通過(guò)質(zhì)詢和響應(yīng)身份驗(yàn)證實(shí)現(xiàn)安全訪問(wèn)控制

通過(guò)質(zhì)詢和響應(yīng)身份驗(yàn)證實(shí)現(xiàn)安全訪問(wèn)控制

Linux中常用的6種SSH身份驗(yàn)證方法
HDCP 2.2:身份驗(yàn)證和密鑰交換

評(píng)論