【发布时间】:2017-11-22 07:24:16
【问题描述】:
我正在使用 Spring Boot 1.4.2.RELEASE、Spring Security 4.1.3.RELEASE 和 Java 8。
对于安全配置,我有以下类:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/assets/**", "/logout", "/login");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement() // 1
.sessionFixation() // 2
.migrateSession() // 3
.maximumSessions(1) // 4
.maxSessionsPreventsLogin(true).expiredUrl("/login").and() // 5
.invalidSessionUrl("/login") // 6
.and() // 7
.authorizeRequests()
.antMatchers("/app/**").authenticated()
.antMatchers("/about").permitAll()
.anyRequest().authenticated().and()
.formLogin()
.loginPage("/login").permitAll()
.loginProcessingUrl("/auth").permitAll()
.defaultSuccessUrl("/app/index", true)
.failureUrl("/login?error")
.usernameParameter("uid")
.passwordParameter("pwd").and()
.logout()
.permitAll()
.invalidateHttpSession(true)
.logoutUrl("/logout").permitAll()
.logoutSuccessUrl("/login").permitAll()
.clearAuthentication(true).and()
.exceptionHandling().and()
.csrf().disable()
.headers().frameOptions().disable()
.cacheControl().and();
}
}
当尝试访问“/about”(允许所有人)时,将我重定向到“/login”。我再次尝试,现在它允许我访问“/about”。
我在配置类中更改了请求的授权顺序,但不起作用。当我删除 sessionManagement 的行(1 到 7)时,一切正常。
我需要任何额外的配置吗?
【问题讨论】:
标签: java spring spring-boot spring-security