Количество анонимных пользователей с помощью Spring Security - PullRequest
1 голос
/ 28 сентября 2011

Мне удалось реализовать несколько функций с помощью Spring Security 3.0.5.Во-первых, я хочу подсчет и список пользователей, которые играют определенную роль.Для этого я установил HttpSessionEventPublisher и конфигурации пружин, которые идут вместе с ним.С этими настройками я могу легко получить список вошедших в систему пользователей независимо от их уровня привилегий - если только они не являются анонимными (ROLE_ANONYMOUS).

Я использую анонимный тег в своем XML-коде безопасности:

<security:anonymous />

Я могу отлаживать входящие анонимные пользователи, хотя AnonymousAuthenticationFilter.doFilter, но SessionRegistry.registerNewSession никогда не вызывается, скорее всего, потому что для анонимных пользователей нет принципала.

Так что я 'Я просто ищу идеи.Я хотел бы иметь возможность перечислить количество сеансов, которые являются анонимными, наряду с другими зарегистрированными пользователями.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Вы можете расширить AnonymousAuthenticationFilter и переопределить метод createAuthentication (он предназначен для переопределения).

Тогда, так как этот метод вызывается только при новой анонимной аутентификации, всякий раз, когда он вызывается, вы можете увеличиватьгде-то встречаться или считать их любым удобным для вас способом.Вам просто нужно посчитать вызовы метода.

0 голосов
/ 30 августа 2015

Вот реализация 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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...