使用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);
}
}
答案 0 :(得分:0)
我在这里找到了相关问题:Spring Boot Java Config Set Session Timeout。
使用server.servlet.session.timeout=60s
可以很好地强制用户会话过期,并且无需触摸Cookie