簡體   English   中英

使用Spring Security的匿名用戶計數

[英]Anonymous user count using Spring Security

我已經設法使用Spring Security 3.0.5完成了幾個功能。 首先是我想要統計和列出具有特定角色的用戶。 為此,我建立了HttpSessionEventPublisher以及隨之HttpSessionEventPublisher的spring配置。 使用這些設置,無論他們的特權級別如何,我都可以輕松獲取已登錄用戶的列表-除非他們是匿名用戶( ROLE_ANONYMOUS )。

我在安全XML中使用了匿名標記:

<security:anonymous />

我可以調試通過AnonymousAuthenticationFilter.doFilter進入的匿名用戶,但從未為這些SessionRegistry.registerNewSession調用SessionRegistry.registerNewSession ,這很可能是因為匿名用戶沒有主體。

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

您可以擴展AnonymousAuthenticationFilter並覆蓋createAuthentication方法(用於覆蓋)。

然后,由於僅在新的匿名身份驗證上調用此方法,因此無論何時調用此方法,您都可以在某個地方增加計數器,或以任何方便的方式對它們進行計數。 您只需要計算對該方法的調用。

這是counting anonymous's in Spring Securitycounting 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();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM