如何在指定时间后强制会话过期?

时间:2019-05-30 11:25:08

标签: spring spring-boot spring-security

使用Spring-boot安全性,我想强制在特定时间段(例如15分钟)后终止已记录的用户会话。

由于使用JSESSIONID cookie来标识登录的用户,因此我希望此cookie必须被强制过期。如果正确,该怎么做?如果没有,正确的方法是什么?

我当前的SecurityConfig

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    @Qualifier("userDetailsServiceImpl")
    private UserDetailsService userDetailsService;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf()
                .disable()
                .authorizeRequests()
                .antMatchers("/login").permitAll()
                .and()
                .authorizeRequests()
                .anyRequest().authenticated()
                .and()
                .logout().logoutUrl("/logout").deleteCookies("JSESSIONID").clearAuthentication(true).invalidateHttpSession(true)
                .and()
                .httpBasic();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authenticationProvider()).eraseCredentials(true);
    }

    @Bean
    public DaoAuthenticationProvider authenticationProvider() {
        final DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        authProvider.setUserDetailsService(userDetailsService);
        authProvider.setPasswordEncoder(encoder());
        return authProvider;
    }

    @Bean
    public PasswordEncoder encoder() {
        return new BCryptPasswordEncoder(11);
    }
}

1 个答案:

答案 0 :(得分:0)

我在这里找到了相关问题:Spring Boot Java Config Set Session Timeout

使用server.servlet.session.timeout=60s可以很好地强制用户会话过期,并且无需触摸Cookie