[英]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 Security
中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();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.