2011-09-28 19 views
1

我已經設法使用Spring Security 3.0.5完成了一些功能。首先是我需要一個具有特定角色的用戶數量和列表。爲了實現這個目標,我制定了HttpSessionEventPublisher以及與之配套的彈簧配置。通過這些設置,我可以輕鬆獲得登錄用戶的列表,而不管他們的權限級別如何 - 除非他們是匿名的(ROLE_ANONYMOUS)。使用Spring Security的匿名用戶數量

我用我的安全XML匿名標籤:

<security:anonymous /> 

我可以調試匿名用戶進來的雖然AnonymousAuthenticationFilter.doFilterSessionRegistry.registerNewSession不會被調用這些,很可能是因爲不存在用於主匿名用戶。

所以我只是在尋找想法。我希望能夠列出匿名會話的計數以及其他註冊用戶。

回答

1

您可以擴展AnonymousAuthenticationFilter並覆蓋createAuthentication方法(它意味着重寫)。

然後,因爲這種方法被稱爲只有在一個新的匿名身份驗證,在調用時,你可以什麼地方增加一個計數器,或以任何方式方便你指望他們。您只需計算對該方法的調用。

0

這是counting anonymous's in Spring Security的實現。

public class ProxyAuthenticationFilter extends AnonymousAuthenticationFilter { 

     private String key = "key"; 

     public ProxyAuthenticationFilter() { 
      super(key); 
     } 

     public ProxyAuthenticationFilter(String key, Object principal, List<GrantedAuthority> authorities) { 
    super(key, principal, authorities); 
     } 

     @Override 
     protected Authentication createAuthentication(HttpServletRequest request) { 

      // do increment and store somewhere 

      return super.createAuthentication(request); 
     } 
} 


@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

     @Override 
     protected void configure(HttpSecurity http) throws Exception { 
      http.anonymous().authenticationFilter(proxyAuthenticationFilter()); 
     } 

     @Bean 
     protected ProxyAuthenticationFilter proxyAuthenticationFilter() { 
      return new ProxyAuthenticationFilter(); 
     } 
    } 
} 
相關問題