一: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
不做浮躁的人 阅读(960)
评论(0) 编辑 收藏 所属分类:
Spring