一:AbstractProcessingFilter:抽象處理過(guò)濾器,處理基于http-based的認(rèn)證請(qǐng)求,該過(guò)濾器主要負(fù)責(zé)處理認(rèn)證請(qǐng)求,如果認(rèn)證成功,結(jié)果對(duì)象(Authtication)將會(huì)被放到SecurityContext里面,SecurityContext必須保證有上一個(gè)過(guò)濾器創(chuàng)建。
如果驗(yàn)證失敗,AuthenticationException將會(huì)被防止以“ACEGI_SECURITY_LAST_EXCEPTION_KEY"為名放在httpSession里面。
為了使用該過(guò)濾器,必須指定以下屬性:
1、defaultTargetUrl:當(dāng)驗(yàn)證通過(guò)時(shí),作為httpSession中以"ACEGI_SAVED-REQUEST_KEY"存儲(chǔ)的轉(zhuǎn)向路徑。該路徑設(shè)置為相對(duì)路徑。
2、authenticationFailureUrl:驗(yàn)證失敗后的轉(zhuǎn)向路徑,比如:/login.jsp?login_error=1
3、filterProcessesUrl、該過(guò)濾器響應(yīng)的路徑。
4、alwaysUseDefaultTargetUrl、在成功認(rèn)證后,總是轉(zhuǎn)向defaultTargetUrl,及時(shí)httpSession的ACEGI_SAVED-REQUEST_KEY變量存儲(chǔ)的目標(biāo)路徑。
5、可以定義一個(gè)java.util.Properties的設(shè)置,映射全稱(chēng)的異常類(lèi)名和轉(zhuǎn)向路徑的映射關(guān)系。比如:
有這個(gè)設(shè)置后,只有沒(méi)有匹配到的異常才會(huì)轉(zhuǎn)向authenticationFailureUrl。
如果認(rèn)證成功,acegi還會(huì)發(fā)布一個(gè)org.acegisecurity.event.authentication.InteractiveAuthenticationSuccessEvent事件到application context。
AuthenticationProcessingFilter繼承AbstractProcessingFilter,處理認(rèn)證的form請(qǐng)求。login form必須有兩個(gè)參數(shù)j_username,j_password.defaultFilterProcessesUrl設(shè)置為默認(rèn)值/j_acegi_security_check。
二:Authentication
表示一個(gè)認(rèn)證請(qǐng)求,一個(gè)Authentication對(duì)象不能認(rèn)為是已經(jīng)認(rèn)證過(guò)的,除非它已經(jīng)被AuthenticationManager處理過(guò)。該對(duì)象存儲(chǔ)在SecurityContext里面。
該接口提供了以下方法:
getAuthorities():得到該認(rèn)證對(duì)象被賦予的權(quán)限。
getCredentials():得到憑證,一般是密碼等。
getDetails():存儲(chǔ)其它的信息,比如ip地址,認(rèn)證號(hào)等。
getPrincipal():得到被授權(quán)的主題,通常是用戶名。isAuthenticated():判斷是否認(rèn)證。
setAuthenticated(boolean isAuthenticated):設(shè)置是否認(rèn)證。
三:UserDetails
getAuthorities();返回授予的權(quán)限。
public String getPassword();返回密碼。
public String getUsername();返回用戶名。
public boolean isAccountNonExpired();帳號(hào)是否過(guò)期。
public boolean isAccountNonLocked();帳號(hào)是否鎖定。
public boolean isCredentialsNonExpired();憑證是否過(guò)期。
public boolean isEnabled();是否可用。
posted on 2006-12-07 16:29
不做浮躁的人 閱讀(967)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
Spring