欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
acegi自帶例子學(xué)習
這是一個(gè)Acegi官方的例子。它以聯(lián)系人的管理為例子,說(shuō)明如何使用Acegi作權限控制。這個(gè)例子包含在acegi的包里面。下載地址:http://prdownloads.sourceforge.net/acegisecurity/acegi-security-0.8.3.zip?download。

一 例子功能簡(jiǎn)介

聯(lián)系人管理說(shuō)明了下列中心的Acegi安全控制能力:
  • Role-based security(基于角色的安全)――每個(gè)責任人都是某個(gè)角色的一員。而角色被用來(lái)限制對某些安全對象的訪(fǎng)問(wèn)。
  • Domain object instance security(域對象實(shí)例安全)――合同,這個(gè)系統里的主要域對象,擁有一個(gè)訪(fǎng)問(wèn)控制列表(ACL),用來(lái)指明誰(shuí)允許讀、管理和刪除對象。
  • Method invocation security(方法調用安全)――這個(gè) ContactManager服務(wù)層對象 包含一些受保護的和公開(kāi)的方法。
  • Web request securityWeb請求安全)――這個(gè)“/secureURI路徑被使用Acegi安全保護,使得沒(méi)有ROLE_USER 角色的用戶(hù)無(wú)法訪(fǎng)問(wèn)。.
  • Security unaware application objects(保護未知的應用對象)――受保護的對象與Acegi之間沒(méi)有明顯的耦合或契約,所以它們沒(méi)有察覺(jué)到安全是由Acegi 提供的。*
  • Security taglib usage(安全標簽庫使用)――所有的JSP使用Acegi 安全標簽庫來(lái)封裝安全信息。*
  • Fully declarative security(完全聲明式的安全)――每一個(gè)安全方面特性都是在application context里面使用標準的Acegi安全對象來(lái)配置的。 *
  • Database-sourced security data(支持數據庫來(lái)源的安全數據)――所有的用戶(hù)、角色和ACL信息都可以從一個(gè)兼容JDBC的內存數據庫獲得。
  • Integrated form-based and BASIC authentication(集成基于表單和BASIC驗證)―― 任何BASIC驗證頭部被檢測以及作為驗證使用。默認使用基于表單的普通交互式驗證。
  • Remember-me services(記住我的服務(wù))―― Acegi安全的插件式的“remember-me 策略被演示。在登錄表單里有一個(gè)相關(guān)的選擇框與之對應。

 

聯(lián)系人管理的業(yè)務(wù)功能描述:

1. 1. 每個(gè)用戶(hù)登錄后,可以看到一個(gè)聯(lián)系人列表。例如,

marissa's Contacts

id

Name

Email

1

John Smith

john@somewhere.com

Del

Admin Permission

2

Michael Citizen

michael@xyz.com

 


 


3

Joe Bloggs

joe@demo.com

Del

 


4

Karen Sutherland

karen@sutherland.com

Del

Admin Permission

Add

說(shuō)明:用戶(hù)沒(méi)有權限訪(fǎng)問(wèn)的聯(lián)系人信息,將不會(huì )顯示。

2. 2. 用戶(hù)可以增加新的聯(lián)系人信息。

3. 3. 如果有刪除權限,用戶(hù)可以看到在聯(lián)系人后面有一個(gè)“Del”鏈接。用戶(hù)可以點(diǎn)擊這個(gè)鏈接來(lái)刪除某個(gè)聯(lián)系人信息。

4. 4. 如果有管理權限,用戶(hù)可以看到在聯(lián)系人后面有一個(gè)“Admin Permission”鏈接。用戶(hù)可以點(diǎn)擊這個(gè)鏈接來(lái)管理訪(fǎng)問(wèn)這個(gè)聯(liá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列。

第一列表示權限,例如,“-RW-D”表示可讀、可寫(xiě)、可刪除。

第二列也表示權限,但它是以類(lèi)似unix權限的數字表達。例如,“[22], 表示可讀、可寫(xiě)、可刪除。

第三列是用戶(hù)名稱(chēng)。

每一行記錄后面都有一個(gè)“Del”鏈接。點(diǎn)擊這個(gè)鏈接,可以刪除掉指定用戶(hù)對這個(gè)聯(lián)系人信息的權限。

5. 5. 用戶(hù)可以為某個(gè)聯(lián)系人信息添加權限。例如,

Add Permission

Contact:

sample.contact.Contact@1787005: Id: 1; Name: John Smith; Email: john@somewhere.com

 


Recipient:

 


Permission:

 


說(shuō)明:權限是動(dòng)態(tài)添加的。例如,上圖中給用戶(hù)scott增加了讀聯(lián)系人John的權限。那么scott馬上就可以看到聯(lián)系人John的信息了。
 

二 功能實(shí)現分析

這個(gè)例子使用了HSQL做數據庫,spring的AOP作為基礎,使用Acegi做安全控制組件。
聯(lián)系人管理的web應用在啟動(dòng)時(shí)候,會(huì )做一系列初始化動(dòng)作:

1. 讀取web.xml文件,并解析文件里的內容。

a) context-param元素。
i. contextConfigLocation屬性。這個(gè)屬性定義了spring所需要的3個(gè)屬性文件。它們分別是:applicationContext -acegi-security.xml、applicationContext-common-business.xml、 applicationContext-common-authorization.xml
ii. log4jConfigLocation屬性。這個(gè)屬性定義了log4j配置文件。
b) filter元素。
這里定義了acegi的一個(gè)過(guò)濾器。Acegi的大部分過(guò)濾器都是這樣配置的。使用FilterToBeanProxy組件,給它傳遞一個(gè)targetClass屬性。這個(gè)targetClass必須實(shí)現javax.servlet.Filter接口。
這里配置的是FilterChainProxy。這個(gè)FilterChainProxy比較好用,可以為它定義一串filter屬性。這些filter將會(huì )按照定義的順序被調用。例如,
<bean id="filterChainProxy" class="net.sf.acegisecurity.util.FilterChainProxy">
<property name="filterInvocationDefinitionSource">
<value>
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,authenticationProcessingFilter,basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,securityEnforcementFilter
</value>
</property>
</bean>
這個(gè)過(guò)濾器的mapping是“/*”。

c) listener元素。
i. ContextLoaderListener。這個(gè)是Spring使用來(lái)加載根applicationcontext。并分別解析 applicationContext-acegi-security.xml、applicationContext-common- business.xml、applicationContext-common-authorization.xml等配置文件,把相關(guān)的對象初始化
iii. Log4jConfigListener。這個(gè)是spring用來(lái)初始化log4j組件的listener。
iv. HttpSessionEventPublisher。這個(gè)組件將發(fā)布HttpSessionCreatedEvent和HttpSessionDestroyedEvent事件給spring的applicationcontext。

d) servlet元素。
i. contacts。這里采用了spring的MVC框架, 所以這個(gè)servlet是spring MVC的一個(gè)核心控制器(org.springframework.web.servlet.DispatcherServlet)。這個(gè)servlet 啟動(dòng)時(shí)候,會(huì )從contacts-servlet.xml里面讀取信息,并做相關(guān)的初始化。
v. remoting。也是spring MVC的一個(gè)核心控制器。與contacts不同,這個(gè)servlet主要是提供web services服務(wù)。這個(gè)servlet啟動(dòng)時(shí)候, 會(huì )從remoting-servlet.xml里面讀取信息,并做相關(guān)的初始化。

e) taglib元素。這里定義了spring的標f) 簽庫。

3. 解析applicationContext-acegi-security.xml。

a) 過(guò)濾器鏈。定義了一個(gè)FilterChainProxy,并指定了一系列的過(guò)濾器鏈。httpSessionContextIntegrationFilter, authenticationProcessingFilter,basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter,securityEnforcementFilter

b) 認證管理器。這個(gè)管理器由acegi提供。這個(gè)管理器需要一個(gè)providers參數。這個(gè)providers參數包含了提供系統認證的對象。
i. daoAuthenticationProvider。一般用戶(hù)認證。
ii. anonymousAuthenticationProvider。匿名用戶(hù)認證。
iv. rememberMeAuthenticationProvider。記住我認證。
 
c) 密碼加密。這里定義了一個(gè)acegi的Md5算法加密對象Md5PasswordEncoder。

d) 定義了一個(gè)jdbcDao實(shí)現類(lèi)。這個(gè)類(lèi)由acegi提供的net.sf.acegisecurity.providers.dao.jdbc.JdbcDaoImpl。這個(gè)對象需要一個(gè)dataSource的參數。

e) 定義daoAuthenticationProvider。這個(gè)對象由acegi提供。它有3個(gè)屬性:
authenticationDao。這里指向前面定義的jdbcDao。
userCache。這里指向后面定義的user緩存對象。
passwordEncoder。這里指向前面定義的密碼加密對象。

f) 用戶(hù)緩存管理。
為了緩存user,這里使用spring的ehcache來(lái)緩存user。緩存機制:
i. 定義緩存管理器――CacheManager。這個(gè)對象是spring的EhCacheManagerFactoryBean對象
ii. 定義user緩存實(shí)際執行對象――UserCacheBackend。這個(gè)對象是spring的EhCacheFactoryBean。它有兩個(gè)屬性:
1. cacheManager。這里指向前面定義的緩存管理器。
2. cacheName。
iii. 定義user緩存――UserCache。它是acegi提供的EhCacheBasedUserCache對象。它有一個(gè)屬性: cache。這里指向的是前面定義的userCacheBackend。
 
g) 定義接收來(lái)自DaoAuthenticationProvider的認證事件的listener――LoggerListener。

4. 解析applicationContext-common-business.xml。
a) dataSource.這里使用了spring的DriverManagerDataSource對象。這個(gè)對象是一個(gè)JDBC數據源的定義。

b) TransactionManager。這里使用spring的DataSourceTransactionManager對象。

c) 事務(wù)攔截器。這里使用spring的事務(wù)攔截器TransactionInterceptor。它有2個(gè)屬性:
transactionManager。這個(gè)屬性指向前面定義的TransactionManager。
transactionAttributeSource。這個(gè)屬性里, 指定了ContactManager的各個(gè)方法的事務(wù)方面的要求。

d) DataSourcePopulator。
使用sample.contact.DataSourcePopulator對象,往HSQL里創(chuàng )建相關(guān)的表結構和數據。
實(shí)現原理:DataSourcePopulator 實(shí)現了接口 InitializingBean。其中afterPropertiesSet方法將在spring初始化DataSourcePopulator后被調用。

e) ContactDao。這里指向一個(gè)ContactDaoSpring對象。它繼承spring的 JdbcDaoSupport,并實(shí)現ContactDao接口。它是真正實(shí)現JDBC操作的對象。

g) ContactManager。這里使用的是spring的ProxyFactoryBean。它有2個(gè)屬性:
i. ProxyInterfaces。代理接口:sample.contact.ContactManager
ii. InterceptorNames。攔截器名稱(chēng)??梢杂卸鄠€(gè),這里包括:transactionInterceptor、contactManagerSecurity、contactManagerTarget。其中,v. transactionInterceptor是前面定義的事務(wù)攔截器。ContactManagerSecurity則是在 applicationContext-common-authorization.xml里定義的方法調用授權。
h) ContactManagerTarget。這里指向的是sample.contact.ContactManagerBackend對象。 ContactManagerBackend實(shí)現了ContactManager接口和InitializingBean接口。它有2個(gè)自定義屬性: contactDao和basicAclExtendedDao。這里會(huì )調用ACL的API去做些創(chuàng )建權限和刪除權限的工作。
 
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
解析Acegi Security System for Spring
spring和struts1整合
在spring web應用中獲得ApplicationContext的引用(2014-06-27)
Java開(kāi)發(fā)框架Spring源碼分析
Spring Security OAuth2 開(kāi)發(fā)指南
spring面試題
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久