Как отключить несколько входов в систему для одной и той же учетной записи пользователя при использовании токенов JWT при загрузке Spring - PullRequest
0 голосов
/ 28 ноября 2018

Как отключить несколько входов в систему для одной и той же учетной записи пользователя при использовании токенов JWT с загрузкой Spring.Как этого добиться в приложении JHIPSTER.Я использую Jhipster 3.12.2.

1 Ответ

0 голосов
/ 28 ноября 2018

В Spring Security вы можете настроить управление сеансами и контролировать максимальное количество сеансов для одного пользователя следующим образом:

sessionManagement()
    .maximumSessions(1)
    .maxSessionsPreventsLogin(true);

maximumSessions контролирует максимальное количество сеансов для пользователя.По умолчанию разрешено любое количество пользователей.

maxSessionsPreventsLogin, если установлено значение true, предотвращает аутентификацию пользователя при достижении maximumSessions.

Так что в приложении jhipster вы можетеconfig для предотвращения нескольких входов в систему для одного и того же пользователя в файле SecurityConfiguration, например:

@Override
public void configure(HttpSecurity http) throws Exception {
    http
        .csrf()
        .disable()
        .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)
        .exceptionHandling()
        .authenticationEntryPoint(problemSupport)
        .accessDeniedHandler(problemSupport)
    .and()
        .headers()
        .frameOptions()
        .disable()
    .and()
        .authorizeRequests()
        .antMatchers("/api/register").permitAll()
        .antMatchers("/api/activate").permitAll()
        .antMatchers("/api/authenticate").permitAll()
        .antMatchers("/api/account/reset-password/init").permitAll()
        .antMatchers("/api/account/reset-password/finish").permitAll()
        .antMatchers("/api/**").authenticated()
        .antMatchers("/websocket/tracker").hasAuthority(AuthoritiesConstants.ADMIN)
        .antMatchers("/websocket/**").permitAll()
        .antMatchers("/management/health").permitAll()
        .antMatchers("/management/info").permitAll()
        .antMatchers("/rest/**").permitAll()
        .antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)
    .and()
        .apply(securityConfigurerAdapter())
    .and()
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .maximumSessions(1)
        .maxSessionsPreventsLogin(true);

}
...