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