Solución:
Solo quiero señalar algunos momentos que no se aclararon aquí.
-
En primer lugar,
.loginPage("/login.html")
no hará el truco (no lo hizo en mi caso de todos modos). Lo que está entre comillas aquí es una ruta URL que se buscará en su controlador. Aquí está el fragmento de mi archivo de configuración de seguridad:.formLogin().loginPage("/login") .loginProcessingUrl("/authentication").permitAll();
Aquí escribí "/login"
. Así que ahora en su controlador defina que el /login
El camino debe apuntar a tu login.html
página.
@GetMapping("/login")
public String login() {
return "login";
}
Solo entonces debería redirigir a la página de visualización requerida. Normalmente coloco las páginas de visualización debajo de /webapp/WEB-INF/view
carpeta.
PD: espero que hayas configurado tu ViewResolver
bean bien, porque de lo contrario no funcionará 🙂
- Y una cosa más. Veo que quieres usar CSS para la página. Para habilitar CSS y otros recursos estáticos para su página de inicio de sesión personalizada, debe agregar esta línea
.antMatchers("/resources/**").permitAll()
Entonces, al final será así (versión muy corta y espeluznante, pero su inicio de sesión personalizado debería funcionar):
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin().loginPage("/login")
.loginProcessingUrl("/authentication").permitAll();
}
Para su información, coloque sus recursos bajo /webapp/resources/
. Además, debe configurar su controlador de recursos en su archivo de configuración de Spring.
Aquí también hay un buen enlace para entenderlo:
https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html#grant-access-to-remaining-resources
Consulte la referencia de seguridad de Spring:
Si bien la página de inicio de sesión generada automáticamente es conveniente para comenzar a funcionar rápidamente, la mayoría de las aplicaciones querrán proporcionar su propia página de inicio de sesión. Para ello podemos actualizar nuestra configuración como se ve a continuación:
protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") 1 .permitAll(); 2 }
1 La configuración actualizada especifica la ubicación de la página de inicio de sesión.
2 Debemos otorgar a todos los usuarios (es decir, usuarios no autenticados) acceso a nuestra página de inicio de sesión. El método formLogin (). PermitAll () permite otorgar acceso a todos los usuarios para todas las URL asociadas con el inicio de sesión basado en formularios.
Tu código modificado:
public void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity
.authorizeRequests()
.antMatchers("/home*").hasRole("USER")
.and()
.formLogin()
.loginPage("/login.html")
.permitAll();
}