這是一個(gè)
Acegi
官方的例子。它以聯(lián)系人的管理為例子,說(shuō)明如何使用
Acegi
作權(quán)限控制。這個(gè)例子包含在
acegi
的包里面。下載地址:
http://prdownloads.sourceforge.net/acegisecurity/acegi-security-0.8.3.zip?download。
聯(lián)系人管理說(shuō)明了下列中心的Acegi安全控制能力:
-
Role-based security
(基于角色的安全)
――每個(gè)責(zé)任人都是某個(gè)角色的一員。而角色被用來(lái)限制對(duì)某些安全對(duì)象的訪問(wèn)。
-
Domain object instance security
(域?qū)ο髮?shí)例安全)
――合同,這個(gè)系統(tǒng)里的主要域?qū)ο螅瑩碛幸粋€(gè)訪問(wèn)控制列表(
ACL
),用來(lái)指明誰(shuí)允許讀、管理和刪除對(duì)象。
-
Method invocation security
(方法調(diào)用安全)――
這個(gè)
ContactManager
服務(wù)層對(duì)象
包含一些受保護(hù)的和公開的方法。
-
Web request security
(
Web
請(qǐng)求安全)
――這個(gè)“
/secure
”
URI
路徑被使用
Acegi
安全保護(hù),使得沒有
ROLE_USER
角色的用戶無(wú)法訪問(wèn)。
.
-
Security unaware application objects
(保護(hù)未知的應(yīng)用對(duì)象)
――受保護(hù)的對(duì)象與
Acegi
之間沒有明顯的耦合或契約,所以它們沒有察覺到安全是由
Acegi
提供的。
*
-
Security taglib usage
(安全標(biāo)簽庫(kù)使用)
――所有的
JSP
使用
Acegi
安全標(biāo)簽庫(kù)來(lái)封裝安全信息。
*
-
Fully declarative security(
完全聲明式的安全
)
――每一個(gè)安全方面特性都是在
application context
里面使用標(biāo)準(zhǔn)的
Acegi
安全對(duì)象來(lái)配置的。
*
-
Database-sourced security data
(支持?jǐn)?shù)據(jù)庫(kù)來(lái)源的安全數(shù)據(jù))
――所有的用戶、角色和
ACL
信息都可以從一個(gè)兼容
JDBC
的內(nèi)存數(shù)據(jù)庫(kù)獲得。
-
Integrated form-based and BASIC authentication
(集成基于表單和
BASIC
驗(yàn)證)――
任何
BASIC
驗(yàn)證頭部被檢測(cè)以及作為驗(yàn)證使用。默認(rèn)使用基于表單的普通交互式驗(yàn)證。
-
Remember-me services
(記住我的服務(wù))――
Acegi
安全的插件式的“
remember-me
”
策略被演示。在登錄表單里有一個(gè)相關(guān)的選擇框與之對(duì)應(yīng)。
聯(lián)系人管理的業(yè)務(wù)功能描述:
1.1.
每個(gè)用戶登錄后,可以看到一個(gè)聯(lián)系人列表。例如,
marissa's Contacts
Add
說(shuō)明:用戶沒有權(quán)限訪問(wèn)的聯(lián)系人信息,將不會(huì)顯示。
2.2.
用戶可以增加新的聯(lián)系人信息。
3.3.
如果有刪除權(quán)限,用戶可以看到在聯(lián)系人后面有一個(gè)“
Del
”鏈接。用戶可以點(diǎn)擊這個(gè)鏈接來(lái)刪除某個(gè)聯(lián)系人信息。
4.4.
如果有管理權(quán)限,用戶可以看到在聯(lián)系人后面有一個(gè)“
Admin Permission
”鏈接。用戶可以點(diǎn)擊這個(gè)鏈接來(lái)管理訪問(wèn)這個(gè)聯(lián)系人的權(quán)限。例如,
Administer Permissions
sample.contact.Contact@26807f: Id: 1; Name: John Smith; Email: john@somewhere.com
-R--- [2] dianne
|
Del
|
-RW-D [22] peter
|
Del
|
A---- [1] marissa
|
Del
|
Add Permission
Manage
說(shuō)明:每一行記錄包含有
3
列。
第一列表示權(quán)限,例如,“
-RW-D
”表示可讀、可寫、可刪除。
第二列也表示權(quán)限,但它是以類似
unix
權(quán)限的數(shù)字表達(dá)。例如,“
[22]
”
,
表示可讀、可寫、可刪除。
第三列是用戶名稱。
每一行記錄后面都有一個(gè)“
Del
”鏈接。點(diǎn)擊這個(gè)鏈接,可以刪除掉指定用戶對(duì)這個(gè)聯(lián)系人信息的權(quán)限。
5.5.
用戶可以為某個(gè)聯(lián)系人信息添加權(quán)限。例如,
Add Permission
說(shuō)明:權(quán)限是動(dòng)態(tài)添加的。例如,上圖中給用戶
scott
增加了讀聯(lián)系人
John
的權(quán)限。那么
scott
馬上就可以看到聯(lián)系人
John
的信息了。