Solución:
La definición de la redirección después de un inicio de sesión exitoso debe aplicarse en Spring Security, no en Spring MVC.
los th:action
define el punto final de Spring Security que procesará la solicitud de autenticación. No define la URL de redireccionamiento. Fuera de la caja, Spring Boot Security le proporcionará la /login
punto final. De forma predeterminada, Spring Security redirigirá después de iniciar sesión al recurso seguro al que intentó acceder. Si desea redirigir siempre a una URL específica, puede forzarlo a través del objeto de configuración HttpSecurity.
Suponiendo que está usando una versión reciente de Spring Boot, debería poder usar JavaConfig.
Aquí hay un ejemplo simple:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserService userService;
@Override
protected void configure(HttpSecurity http) throws Exception {
// the boolean flags force the redirection even though
// the user requested a specific secured resource.
http.formLogin().defaultSuccessUrl("/success.html", true);
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userService);
}
}
Tenga en cuenta que debe definir un punto final apropiado para entregar contenido para el /success.html
URL. Un recurso estático disponible por defecto en src/main/resources/public/
haría el truco para fines de prueba. Personalmente, preferiría definir una URL segura servida por un controlador Spring MVC que sirve contenido con Thymeleaf. No desea que ningún usuario anónimo pueda acceder a la página de éxito. Thymeleaf como algunas características útiles para interactuar con Spring Security mientras se procesa el contenido HTML.
Saludos, Daniel