繁体   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