通过自动注销,我的意思是当会话到期时,浏览器将被重定向到注销网址,而用户无需点击任何链接,无论如何都会将他重定向到注销网址。
这是我的SecurityConfig:
import org.springframework.beans.factory.annotation.Autowired;进口 org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.context.annotation.Bean;进口 org.springframework.context.annotation.Configuration;进口 org.springframework.core.annotation.Order;进口 org.springframework.security.access.vote.RoleVoter;进口 org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 进口 org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; 进口 org.springframework.security.config.annotation.web.builders.HttpSecurity; 进口 org.springframework.security.config.annotation.web.builders.WebSecurity; 进口 org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 进口 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.http.SessionCreationPolicy;
/ ** * 2016年5月5日由柏拉图创建。 * / @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)公共类 SecurityConfig扩展了WebSecurityConfigurerAdapter {
@Autowired DatabaseAuthenticationProvider authenticationProvider; @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers("/js/**", "/css/**", "/img/**", "/templates/**", "/thymeleaf/**"); } @Override protected void configure(HttpSecurity http) throws Exception { http.formLogin() .loginPage("/login") .failureUrl("/login?failed=true") .defaultSuccessUrl("/login-success") .and().logout() .logoutSuccessUrl("/") .and().authorizeRequests() .antMatchers("/admin**", "/api/admin/**").hasAuthority("ADMIN") .antMatchers("/**") .permitAll() .anyRequest().authenticated() .and().csrf().disable() .sessionManagement() .maximumSessions(1) .expiredUrl("/login?expired-session") .and() .invalidSessionUrl("/?invalid-session"); } @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(authenticationProvider).eraseCredentials(true); } }
答案 0 :(得分:0)
客户必须进行投票。服务器无法“推送”重定向。
客户端可以每X个时间轮询一次,其中X比会话超时略长。如果轮询更频繁,那么它将刷新会话,因此永远不会超时。客户端可以在每次用户交互时重置计时器。