Spring Security SessionRegistry仅限java配置

时间:2015-06-14 10:17:13

标签: java spring security spring-security

有人可以在如何在Spring Security中使用仅仅java配置(没有任何XML)提供真正的工作代码片段。

我正在使用 Spring Security v4.0.1.RELEASE

我试图做的事情:

  1. 使用Apache Commons Lang实现UserDetails中的hashCode()和equals()方法
  2. <![CDATA[
    // content of your Javascript goes here
    ]]>
    
    1. 启用HttpSessionEventPublisher
    2. 
      
          @Override
          public int hashCode() {
              return HashCodeBuilder.reflectionHashCode(this, "password", "id", "role", "description", "registrationDate", "enabled");
          }
      
          @Override
          public boolean equals(Object obj) {
              return EqualsBuilder.reflectionEquals(this, obj, "password", "id", "role", "description", "registrationDate", "enabled");
          }
      
      
        安全配置类中的
      1. 定义的bean
      2. 
        
            public class AppSecurityInitializer extends
                    AbstractSecurityWebApplicationInitializer {
        
                @Override
                protected boolean enableHttpSessionEventPublisher() {
                    return true;
                }
            }
        
        
        1. 设置http安全
        2. 
          
              @Bean
              public SessionRegistry getSessionRegistry() {
                  return new SessionRegistryImpl();
              }
          
              @Bean
              public SessionAuthenticationStrategy getSessionAuthStrategy(SessionRegistry sessionRegistry) {
                  ConcurrentSessionControlAuthenticationStrategy controlAuthenticationStrategy =
                          new ConcurrentSessionControlAuthenticationStrategy(sessionRegistry);
          
                  return controlAuthenticationStrategy;
              }
          
          

          代码有效,它阻止我在相同的用户twise下登录,但是当我在控制器类中获得SessionRegistry时,它总是为空。

1 个答案:

答案 0 :(得分:1)

看起来好像spring自己创建了一个不同的SessionRegistryImpl。

怎么样?
httpSecurity
    .sessionManagement()
    .maximumSessions(1)
    .sessionRegistry(getSessionRegistry());

省去sessionAuthenticationStrategy的东西?!