spring security 3 关于session 会话管理
spring security 3 的官方的文档不是很好找,一般都是spring security 2 (Acegi)的文档较多,但是 3 在 2 的基础上发生了很大变化,其中过滤器的命名使用上就有很大的差异。这是找到的3.0.1 的一个文档地址 http://www.fengfly.com/document/springsecurity3/springsecurity.html(2011.5可用),可以查看过滤器链相关内容,发现不同,下图为3.0+的一个过滤器命名空间表:
Table 2.1. 标准过滤器假名和顺序
| auto-config | 假名 | 过滤器类 | 命名空间元素或属性 |
|---|---|---|---|
| CHANNEL_FILTER | ChannelProcessingFilter |
http/intercept-url@requires-channel |
|
| CONCURRENT_SESSION_FILTER | ConcurrentSessionFilter |
session-management/concurrency-control |
|
| SECURITY_CONTEXT_FILTER | SecurityContextPersistenceFilter |
http |
|
| Y | LOGOUT_FILTER | LogoutFilter |
http/logout |
| X509_FILTER | X509AuthenticationFilter |
http/x509 |
|
| PRE_AUTH_FILTER | AstractPreAuthenticatedProcessingFilter Subclasses |
N/A | |
| CAS_FILTER | CasAuthenticationFilter |
N/A | |
| Y | FORM_LOGIN_FILTER | UsernamePasswordAuthenticationFilter |
http/form-login |
| Y | BASIC_AUTH_FILTER | BasicAuthenticationFilter |
http/http-basic |
| SERVLET_API_SUPPORT_FILTER | SecurityContextHolderAwareFilter |
http/@servlet-api-provision |
|
| REMEMBER_ME_FILTER | RememberMeAuthenticationFilter |
http/remember-me |
|
| ANONYMOUS_FILTER | SessionManagementFilter |
http/anonymous |
|
| SESSION_MANAGEMENT_FILTER | AnonymousAuthenticationFilter |
session-management |
|
| EXCEPTION_TRANSLATION_FILTER | ExceptionTranslationFilter |
http |
|
| FILTER_SECURITY_INTERCEPTOR | FilterSecurityInterceptor |
http |
|
| SWITCH_USER_FILTER | SwitchUserAuthenticationFilter |
N/A |
从上表可以看出,默认的auto-config=‘true’配置中必不包含session-management的过滤器,所以要进行会话管理,需要自己添加过滤器以及监听器。如果你自己扩展了userdetails(实现implements UserDetails)的话,在实现类里注意要重写以下两个方法,否则相同用户登录次数限制将不起作用(原因hashset等结构数据的比较通过hascode()方法)。
/** * 获取当前登录用户详细信息必须重写次方法 */
public int hashCode()
{
return getUsername().hashCode();
}
/** * 获取当前登录用户详细信息必须重写次方法 */
public boolean equals(Object obj)
{
if (obj instanceof UserDetails)
{
UserDetails ud = (UserDetails) obj;
if (ud.getUsername().equals(this.getUsername()))
{ return true;}
}
return false;
}
测试相同用户登录限制的时候,用不同浏览器分别访问。

浙公网安备 33010602011771号