我已经设法使用Spring Security 3.0.5完成了一些功能。首先,我想要一个具有特定角色的计数和用户列表。为了实现这一点,我设置了HttpSessionEventPublisher
以及随之而来的弹簧配置。通过这些设置,我可以轻松获取已登录用户的列表,无论他们的权限级别如何 - 除非他们是匿名的(ROLE_ANONYMOUS
)。
我在安全XML中使用匿名标记:
<security:anonymous />
我可以通过AnonymousAuthenticationFilter.doFilter
调试进入的匿名用户,但SessionRegistry.registerNewSession
永远不会被调用,很可能是因为匿名用户没有委托人。
所以我只是在寻找想法。我希望能够列出匿名会话的计数以及其他注册用户。
答案 0 :(得分:1)
您可以扩展AnonymousAuthenticationFilter
并覆盖createAuthentication
方法(它用于覆盖)。
然后,由于此方法仅在新的匿名身份验证时调用,因此无论何时调用它,您都可以在某处增加计数器,或者以任何方便的方式对它们进行计数。你只需要计算对方法的调用。
答案 1 :(得分: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();
}
}
}