Spring Security Java Config no genera URL de cierre de sesión
Estoy usando Spring4.0.5. LIBERACIÓN y seguridad de primavera3.2.4.
Estoy tratando de crear una aplicación de muestra simple usando la configuración de Java (basada en las muestras de Spring). La aplicación se inicia y la autenticación funciona correctamente, es decir, se me redirige a un formulario de inicio de sesión cuando accedo a la URL protegida/ configuración / perfil
Sin embargo no hay/cerrar sesión url generada? si presiono localhost: 8080 / logout obtengo un 404.
He usado un código similar en un proyecto anterior, ¿quizás tenga algo que ver con las versiones?
Aquí está mi configuración de seguridad
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.inMemoryAuthentication().withUser("admin").password("password").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/settings/**").hasRole("ROLE_ADMIN")
.and()
.formLogin()
.and()
.logout()
.deleteCookies("remove")
.invalidateHttpSession(true)
.logoutUrl("/logout")
.logoutSuccessUrl("/logout-success")
.permitAll();
}
}
Aquí está mi WebAppInitializer para arrancar la aplicación
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { SecurityConfig.class , MvcConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
y finalmente mi MvcConfig
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = {"web"})
public class MvcConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}