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