Acegi安全系統(tǒng)的配置_第1頁(yè)
Acegi安全系統(tǒng)的配置_第2頁(yè)
Acegi安全系統(tǒng)的配置_第3頁(yè)
Acegi安全系統(tǒng)的配置_第4頁(yè)
Acegi安全系統(tǒng)的配置_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Acegi 的配置看起來(lái)非常復(fù)雜,但事實(shí)上在實(shí)際項(xiàng)目的安全應(yīng)用中我們并不需要那么多功能,清楚的了解Acegi配置中各項(xiàng)的功能,有助于我們靈活的運(yùn)用Acegi于實(shí)踐中。2.1 在Web.xml中的配置1) FilterToBeanProxy Acegi通過(guò)實(shí)現(xiàn)了Filter接口的FilterToBeanProxy提供一種特殊的使用Servlet Filter的方式,它委托Spring中的Bean - FilterChainProxy來(lái)完成過(guò)濾功能,這好處是簡(jiǎn)化了web.xml的配置,并且充分利用了Spring IOC的優(yōu)勢(shì)。FilterChainProxy包含了處理認(rèn)證過(guò)程的filter列表,每

2、個(gè)filter都有各自的功能。 <filter> <filter-name>Acegi Filter Chain Proxy</filter-name> <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class> <init-param> <param-name>targetClass</param-name> <param-value>org.acegisecurity.util.FilterChainPr

3、oxy</param-value> </init-param> </filter>2) filter-mapping <filter-mapping>限定了FilterToBeanProxy的URL匹配模式,只有*.do和*.jsp和/j_acegi_security_check 的請(qǐng)求才會(huì)受到權(quán)限控制,對(duì)javascript,css等不限制。 <filter-mapping> <filter-name>Acegi Filter Chain Proxy</filter-name> <url-pattern

4、>*.do</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Acegi Filter Chain Proxy</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>Acegi Filter Chain Proxy</filter-name> <

5、url-pattern>/j_acegi_security_check</url-pattern> </filter-mapping>3) HttpSessionEventPublisher <listener>的HttpSessionEventPublisher用于發(fā)布HttpSessionApplicationEvents和HttpSessionDestroyedEvent事件給spring的applicationcontext。 <listener> <listener-class>org.acegisecurity.ui

6、.session.HttpSessionEventPublisher</listener-class> </listener>2.2 在applicationContext-acegi-security.xml中2.2.1 FILTER CHAINFilterChainProxy會(huì)按順序來(lái)調(diào)用這些filter,使這些filter能享用Spring ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON定義了url比較前先轉(zhuǎn)為小寫(xiě), PATTERN_TYPE_APACHE_ANT定義了使用Apache ant的匹配模式 <

7、;bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /*=httpSessionContextIntegrationFilter,authenticatio

8、nProcessingFilter,basicProcessingFilter,rememberMeProcessingFilter,anonymousProcessingFilter, exceptionTranslationFilter,filterInvocationInterceptor </value> </property> </bean>2.2.2 基礎(chǔ)認(rèn)證1) authenticationManager 起到認(rèn)證管理的作用,它將驗(yàn)證的功能委托給多個(gè)Provider,并通過(guò)遍歷Providers, 以保證獲取不同來(lái)源的身份認(rèn)證,若某個(gè)Provi

9、der能成功確認(rèn)當(dāng)前用戶(hù)的身份,authenticate()方法會(huì)返回一個(gè)完整的包含用戶(hù)授權(quán)信息的Authentication對(duì)象,否則會(huì)拋出一個(gè)AuthenticationException。 Acegi提供了不同的AuthenticationProvider的實(shí)現(xiàn),如: DaoAuthenticationProvider 從數(shù)據(jù)庫(kù)中讀取用戶(hù)信息驗(yàn)證身份 AnonymousAuthenticationProvider 匿名用戶(hù)身份認(rèn)證 RememberMeAuthenticationProvider 已存cookie中的用戶(hù)信息身份認(rèn)證 AuthByAdapterProvider 使用容器的

10、適配器驗(yàn)證身份 CasAuthenticationProvider 根據(jù)Yale中心認(rèn)證服務(wù)驗(yàn)證身份, 用于實(shí)現(xiàn)單點(diǎn)登陸 JaasAuthenticationProvider 從JASS登陸配置中獲取用戶(hù)信息驗(yàn)證身份 RemoteAuthenticationProvider 根據(jù)遠(yuǎn)程服務(wù)驗(yàn)證用戶(hù)身份 RunAsImplAuthenticationProvider 對(duì)身份已被管理器替換的用戶(hù)進(jìn)行驗(yàn)證 X509AuthenticationProvider 從X509認(rèn)證中獲取用戶(hù)信息驗(yàn)證身份 TestingAuthenticationProvider 單元測(cè)試時(shí)使用 每個(gè)認(rèn)證者會(huì)對(duì)自己指定的證明信

11、息進(jìn)行認(rèn)證,如DaoAuthenticationProvider僅對(duì)UsernamePasswordAuthenticationToken這個(gè)證明信息進(jìn)行認(rèn)證。<bean id="authenticationManager" class="viders.ProviderManager"> <property name="providers"> <list> <ref local="daoAuthenticationProvider"

12、/> <ref local="anonymousAuthenticationProvider"/> <ref local="rememberMeAuthenticationProvider"/> </list> </property></bean>2) daoAuthenticationProvider 進(jìn)行簡(jiǎn)單的基于數(shù)據(jù)庫(kù)的身份驗(yàn)證。DaoAuthenticationProvider獲取數(shù)據(jù)庫(kù)中的賬號(hào)密碼并進(jìn)行匹配,若成功則在通過(guò)用戶(hù)身份的同時(shí)返回一個(gè)包含授權(quán)信息的Authenticat

13、ion對(duì)象,否則身份驗(yàn)證失敗,拋出一個(gè)AuthenticatiionException。 <bean id="daoAuthenticationProvider" class="viders.dao.DaoAuthenticationProvider"> <property name="userDetailsService" ref="jdbcDaoImpl"/> <property name="userCache" ref

14、="userCache"/> <property name="passwordEncoder" ref="passwordEncoder"/> </bean>3) passwordEncoder 使用加密器對(duì)用戶(hù)輸入的明文進(jìn)行加密。Acegi提供了三種加密器: PlaintextPasswordEncoder默認(rèn),不加密,返回明文. ShaPasswordEncoder哈希算法(SHA)加密 Md5PasswordEncoder消息摘要(MD5)加密<bean id="passwordEn

15、coder" class="viders.encoding.Md5PasswordEncoder"/>4) jdbcDaoImpl 用于在數(shù)據(jù)中獲取用戶(hù)信息。 acegi提供了用戶(hù)及授權(quán)的表結(jié)構(gòu),但是您也可以自己來(lái)實(shí)現(xiàn)。通過(guò)usersByUsernameQuery這個(gè)SQL得到你的(用戶(hù)ID,密碼,狀態(tài)信息);通過(guò)authoritiesByUsernameQuery這個(gè)SQL得到你的(用戶(hù)ID,授權(quán)信息) <bean id="jdbcDaoImpl" class="org.aceg

16、isecurity.userdetails.jdbc.JdbcDaoImpl"> <property name="dataSource" ref="dataSource"/> <property name="usersByUsernameQuery"> <value>select loginid,passwd,1 from users where loginid = ?</value> </property> <property name="a

17、uthoritiesByUsernameQuery"> <value>select u.loginid, from users u,roles r,permissions p,user_role ur,role_permis rp where u.id=ur.user_id and r.id=ur.role_id and p.id=rp.permis_id and r.id=rp.role_id and p.status='1' and u.loginid=?</value> </property></bea

18、n>5) userCache& resourceCache 緩存用戶(hù)和資源相對(duì)應(yīng)的權(quán)限信息。每當(dāng)請(qǐng)求一個(gè)受保護(hù)資源時(shí),daoAuthenticationProvider就會(huì)被調(diào)用以獲取用戶(hù)授權(quán)信息。如果每次都從數(shù)據(jù)庫(kù)獲取的話,那代價(jià)很高,對(duì)于不常改變的用戶(hù)和資源信息來(lái)說(shuō),最好是把相關(guān)授權(quán)信息緩存起來(lái)。(詳見(jiàn) 2.6.3 資源權(quán)限定義擴(kuò)展 ) userCache提供了兩種實(shí)現(xiàn): NullUserCache和EhCacheBasedUserCache, NullUserCache實(shí)際上就是不進(jìn)行任何緩存,EhCacheBasedUserCache是使用Ehcache來(lái)實(shí)現(xiàn)緩功能。 &

19、lt;bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager"/> <property name="cacheName" value="userCache"/> </bean> <bean id="use

20、rCache" class="viders.dao.cache.EhCacheBasedUserCache" autowire="byName"> <property name="cache" ref="userCacheBackend"/> </bean> <bean id="resourceCacheBackend" class="org.springframework.cache.ehcach

21、e.EhCacheFactoryBean"> <property name="cacheManager" ref="cacheManager"/> <property name="cacheName" value="resourceCache"/> </bean> <bean id="resourceCache" class="org.springside.modules.security.service.acegi.cache

22、.ResourceCache" autowire="byName"> <property name="cache" ref="resourceCacheBackend"/> </bean>6) basicProcessingFilter 用于處理HTTP頭的認(rèn)證信息,如從Spring遠(yuǎn)程協(xié)議(如Hessian和Burlap)或普通的瀏覽器如IE,Navigator的HTTP頭中獲取用戶(hù)信息,將他們轉(zhuǎn)交給通過(guò)authenticationManager屬性裝配的認(rèn)證管理器。如果認(rèn)證成功,會(huì)將一個(gè)Au

23、thentication對(duì)象放到會(huì)話中,否則,如果認(rèn)證失敗,會(huì)將控制轉(zhuǎn)交給認(rèn)證入口點(diǎn)(通過(guò)authenticationEntryPoint屬性裝配) <bean id="basicProcessingFilter" class="org.acegisecurity.ui.basicauth.BasicProcessingFilter"> <property name="authenticationManager" ref="authenticationManager"/> <prope

24、rty name="authenticationEntryPoint" ref="basicProcessingFilterEntryPoint"/> </bean>7) basicProcessingFilterEntryPoint 通過(guò)向?yàn)g覽器發(fā)送一個(gè)HTTP401(未授權(quán))消息,提示用戶(hù)登錄。處理基于HTTP的授權(quán)過(guò)程, 在當(dāng)驗(yàn)證過(guò)程出現(xiàn)異常后的"去向",通常實(shí)現(xiàn)轉(zhuǎn)向、在response里加入error信息等功能。 <bean id="basicProcessingFilterEntryPoin

25、t" class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint"> <property name="realmName" value="SpringSide Realm"/></bean>8) authenticationProcessingFilterEntryPoint 當(dāng)拋出AccessDeniedException時(shí),將用戶(hù)重定向到登錄界面。屬性loginFormUrl配置了一個(gè)登錄表單的URL,當(dāng)需要用戶(hù)

26、登錄時(shí),authenticationProcessingFilterEntryPoint會(huì)將用戶(hù)重定向到該URL <bean id="authenticationProcessingFilterEntryPoint" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"> <property name="loginFormUrl"> <value>/security/login.jsp</val

27、ue> </property> <property name="forceHttps" value="false"/></bean>2.2.3 HTTP安全請(qǐng)求1) httpSessionContextIntegrationFilter 每次request前 HttpSessionContextIntegrationFilter從Session中獲取Authentication對(duì)象,在request完后, 又把Authentication對(duì)象保存到Session中供下次request使用,此filter必須其他A

28、cegi filter前使用,使之能跨越多個(gè)請(qǐng)求。<bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"></bean> <bean id="httpRequestAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">

29、 <property name="allowIfAllAbstainDecisions" value="false"/> <property name="decisionVoters"> <list> <ref bean="roleVoter"/> </list> </property></bean>2) httpRequestAccessDecisionManager 經(jīng)過(guò)投票機(jī)制來(lái)決定是否可以訪問(wèn)某一資源(URL或方法)。all

30、owIfAllAbstainDecisions為false時(shí)如果有一個(gè)或以上的decisionVoters投票通過(guò),則授權(quán)通過(guò)??蛇x的決策機(jī)制有ConsensusBased和UnanimousBased <bean id="httpRequestAccessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased"> <property name="allowIfAllAbstainDecisions" value="false"

31、;/> <property name="decisionVoters"> <list> <ref bean="roleVoter"/> </list> </property> </bean>3) roleVoter 必須是以rolePrefix設(shè)定的value開(kāi)頭的權(quán)限才能進(jìn)行投票,如AUTH_ , ROLE_ <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter"

32、> <property name="rolePrefix" value="AUTH_"/> </bean>4)exceptionTranslationFilter 異常轉(zhuǎn)換過(guò)濾器,主要是處理AccessDeniedException和AuthenticationException,將給每個(gè)異常找到合適的"去向" <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTrans

33、lationFilter"> <property name="authenticationEntryPoint" ref="authenticationProcessingFilterEntryPoint"/> </bean>5) authenticationProcessingFilter 和servlet spec差不多,處理登陸請(qǐng)求.當(dāng)身份驗(yàn)證成功時(shí),AuthenticationProcessingFilter會(huì)在會(huì)話中放置一個(gè)Authentication對(duì)象,并且重定向到登錄成功頁(yè)面 authenticat

34、ionFailureUrl定義登陸失敗時(shí)轉(zhuǎn)向的頁(yè)面 defaultTargetUrl定義登陸成功時(shí)轉(zhuǎn)向的頁(yè)面 filterProcessesUrl定義登陸請(qǐng)求的頁(yè)面 rememberMeServices用于在驗(yàn)證成功后添加cookie信息 <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"> <property name="authenticationManage

35、r" ref="authenticationManager"/> <property name="authenticationFailureUrl"> <value>/security/login.jsp?login_error=1</value> </property> <property name="defaultTargetUrl"> <value>/admin/index.jsp</value> </property>

36、; <property name="filterProcessesUrl"> <value>/j_acegi_security_check</value> </property> <property name="rememberMeServices" ref="rememberMeServices"/> </bean>6) filterInvocationInterceptor 在執(zhí)行轉(zhuǎn)向url前檢查objectDefinitionSource中設(shè)定的用戶(hù)權(quán)限信息

37、。首先,objectDefinitionSource中定義了訪問(wèn)URL需要的屬性信息(這里的屬性信息僅僅是標(biāo)志,告訴accessDecisionManager要用哪些voter來(lái)投票)。然后,authenticationManager掉用自己的provider來(lái)對(duì)用戶(hù)的認(rèn)證信息進(jìn)行校驗(yàn)。最后,有投票者根據(jù)用戶(hù)持有認(rèn)證和訪問(wèn)url需要的屬性,調(diào)用自己的voter來(lái)投票,決定是否允許訪問(wèn)。 <bean id="filterInvocationInterceptor" class="ercept.web.FilterSec

38、urityInterceptor"> <property name="authenticationManager" ref="authenticationManager"/> <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/> <property name="objectDefinitionSource" ref="filterDef

39、initionSource"/> </bean>7) filterDefinitionSource (詳見(jiàn) 2.6.3 資源權(quán)限定義擴(kuò)展) 自定義DBFilterInvocationDefinitionSource從數(shù)據(jù)庫(kù)和cache中讀取保護(hù)資源及其需要的訪問(wèn)權(quán)限信息 <bean id="filterDefinitionSource" class="org.springside.modules.security.service.acegi.DBFilterInvocationDefinitionSource">

40、<property name="convertUrlToLowercaseBeforeComparison" value="true"/> <property name="useAntPath" value="true"/> <property name="acegiCacheManager" ref="acegiCacheManager"/></bean>2.2.4 方法調(diào)用安全控制(詳見(jiàn) 2.6.3 資源權(quán)限定義擴(kuò)展)1)

41、methodSecurityInterceptor 在執(zhí)行方法前進(jìn)行攔截,檢查用戶(hù)權(quán)限信息 2) methodDefinitionSource 自定義MethodDefinitionSource從cache中讀取權(quán)限 <bean id="methodSecurityInterceptor" class="ercept.method.aopalliance.MethodSecurityInterceptor"> <property name="authenticationManager&

42、quot; ref="authenticationManager"/> <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/> <property name="objectDefinitionSource" ref="methodDefinitionSource"/> </bean> <bean id="methodDefinition

43、Source" class="org.springside.modules.security.service.acegi.DBMethodDefinitionSource"> <property name="acegiCacheManager" ref="acegiCacheManager"/> </bean>2.3 Jcaptcha驗(yàn)證碼采用 作為通用的驗(yàn)證碼方案,請(qǐng)參考SpringSide中的例子,或網(wǎng)上的: 差沙在此過(guò)程中又發(fā)現(xiàn)acegi logout filter的錯(cuò)誤,進(jìn)行了修正。另外

44、它默認(rèn)提供的圖片比較難認(rèn),我們custom了一個(gè)美觀一點(diǎn)的版本。補(bǔ)充!1.Filter 組件HttpSessionContextIntegrationFilter該Filter負(fù)責(zé)每次請(qǐng)求前從HttpSession中獲取Authentication對(duì)象,然后把Authentication存于一個(gè)新的 ContextHolder對(duì)象(其實(shí)質(zhì)上只是一個(gè)ThreadLocal對(duì)象)中,則讓該次請(qǐng)求過(guò)程中的任何Filter都可以通過(guò) ContextHolder來(lái)共享Authentication,而不需要從HttpSession中取,減少傳HttpRequest參數(shù)的麻煩。在請(qǐng) 求完后把Authenti

45、cation對(duì)象保存到HttpSession中供下次請(qǐng)求使用, 最后把剛才生成的ContextHolder對(duì)象銷(xiāo)毀。這樣就達(dá)到了讓Authentication對(duì)象跨越多個(gè)請(qǐng)求的目的。注意此filter須在調(diào)用其他Acegi filter前使用:<bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter"> </bean> AuthenticationProces

46、singFilter該Filter負(fù)責(zé)處理登陸身份驗(yàn)證。當(dāng)接受到與filterProcessesUrl所定義相同的請(qǐng)求時(shí),它會(huì)首先通過(guò) AuthenticationManager來(lái)驗(yàn)證用戶(hù)身份。如果驗(yàn)證成功,則重定向到defaultTargetUrl所定義的成功登陸頁(yè)面。如果驗(yàn)證 失敗,則再?gòu)膔ememberMeServices中獲取用戶(hù)身份,若再獲取失敗,則重定向到authenticationFailureUrl所定義登 陸失敗頁(yè)面。<bean id="authenticationProcessingFilter" class="org.acegisecu

47、rity.ui.webapp.AuthenticationProcessingFilter"> <property name="authenticationManager"><ref bean="authenticationManager"/></property> <property name="authenticationFailureUrl"><value>/acegilogin.jsp?login_error=1</value></p

48、roperty> <property name="defaultTargetUrl"><value>/</value></property> <property name="filterProcessesUrl"><value>/j_acegi_security_check</value></property> <property name="rememberMeServices"><ref local="

49、rememberMeServices"/></property> </bean> LogoutFilter該Filter負(fù)責(zé)處理退出登錄后所需要的清理工作。它會(huì)把session銷(xiāo)毀,把ContextHolder清空, 把rememberMeServices從cookies中清除掉,然后重定向到指定的退出登陸頁(yè)面。<bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"> <constructor-arg val

50、ue="/index.jsp"/> <!- URL redirected to after logout -> <constructor-arg> <list> <ref bean="rememberMeServices"/> <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler"/> </list> </constructor-arg> </bean&g

51、t; FilterInvocationInterceptor該過(guò)濾器會(huì)首先調(diào)用AuthenticationManager判斷用戶(hù)是否已登陸認(rèn)證,如還沒(méi)認(rèn)證成功,則重定向到登陸界面。認(rèn)證成功,則并從 Authentication中獲取用戶(hù)的權(quán)限。然后從objectDefinitionSource屬性獲取各種URL資源所對(duì)應(yīng)的權(quán)限。最后調(diào)用 AccessDecisionManager來(lái)判斷用戶(hù)所擁有的權(quán)限與當(dāng)前受保華的URL資源所對(duì)應(yīng)的權(quán)限是否相匹配。如果匹配失敗,則返回403錯(cuò)誤 (禁止訪問(wèn))給用戶(hù)。匹配成功則用戶(hù)可以訪問(wèn)受保護(hù)的URL資源。<bean id="filterInv

52、ocationInterceptor" class="ercept.web.FilterSecurityInterceptor"> <property name="authenticationManager"><ref bean="authenticationManager"/></property> <property name="accessDecisionManager"><ref local=&q

53、uot;httpRequestAccessDecisionManager"/></property> <property name="objectDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /index.jsp=ROLE_ANONYMOUS,ROLE_USER /hello.htm=ROLE_ANONYMOUS,ROLE_USER /logoff.jsp=ROLE_ANONYMOU

54、S,ROLE_USER /switchuser.jsp=ROLE_SUPERVISOR /j_acegi_switch_user=ROLE_SUPERVISOR /acegilogin.jsp*=ROLE_ANONYMOUS,ROLE_USER /*=ROLE_USER </value> </property> </bean> SecurityContextHolderAwareRequestFilter該Filter負(fù)責(zé)通過(guò)Decorate Model(裝飾模式),裝飾的HttpServletRequest對(duì)象。其Wapper是ServletRequest

55、包裝類(lèi) HttpServletRequestWrapper的子類(lèi)(SavedRequestAwareWrapper或 SecurityContextHolderAwareRequestWrapper),附上獲取用戶(hù)權(quán)限信息,request參數(shù),headers, Date headers 和 cookies 的方法。<bean id="securityContextHolderAwareRequestFilter" class="org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter&

56、quot; /> BasicProcessingFilter該Filter負(fù)責(zé)處理HTTP頭的認(rèn)證信息,如從Spring遠(yuǎn)程協(xié)議(如Hessian和Burlap)或普通的瀏覽器如IE, Navigator的HTTP頭中獲取用戶(hù)信息,將他們轉(zhuǎn)交給通過(guò)authenticationManager屬性裝配的認(rèn)證管理器。如果認(rèn)證成功,會(huì)將 一個(gè)Authentication對(duì)象放到會(huì)話中,否則,如果認(rèn)證失敗,會(huì)將控制轉(zhuǎn)交給認(rèn)證入口點(diǎn)(通過(guò) authenticationEntryPoint屬性裝配) <bean id="basicProcessingFilter" class

57、="org.acegisecurity.ui.basicauth.BasicProcessingFilter"> <property name="authenticationManager"><ref local="authenticationManager"/></property> <property name="authenticationEntryPoint"><ref local="basicProcessingFilterEntryP

58、oint"/></property> </bean> <bean id="basicProcessingFilterEntryPoint" class="org.acegisecurity.ui.basicauth.BasicProcessingFilterEntryPoint"> <property name="realmName"><value>Contacts Realm</value></property> </bean&

59、gt; RememberMeProcessingFilter該Filter負(fù)責(zé)在用戶(hù)登錄后在本地機(jī)上記錄用戶(hù)cookies信息,免除下次再次登陸。檢查AuthenticationManager 中是否已存在Authentication對(duì)象,如果不存在則會(huì)調(diào)用RememberMeServices的aotoLogin方法來(lái)從cookies中 獲取Authentication對(duì)象 <bean id="rememberMeProcessingFilter" class="org.acegisecurity.ui.rememberme.RememberMeProces

60、singFilter"> <property name="authenticationManager" ref="authenticationManager" /> <property name="rememberMeServices" ref="rememberMeServices" /> </bean> AnonymousProcessingFilter該Filter負(fù)責(zé)為當(dāng)不存在任何授權(quán)信息時(shí),自動(dòng)為Authentication對(duì)象添加userAttribu

61、te中定義的匿名用戶(hù)權(quán)限 <bean id="anonymousProcessingFilter" class="viders.anonymous.AnonymousProcessingFilter"> <property name="key" value="changeThis" /> <property name="userAttribute" value="anonymousUser,ROLE_ANONYMOUS" /> </bean> ExceptionTranslationFilter該過(guò)濾器負(fù)責(zé)處理各種異常,然后重定向到相應(yīng)的頁(yè)面中。 <bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"> <property

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論