¡Hola Rayner!
Entiendo que estás buscando una forma de aplicar autenticación para toda tu API excepto para el inicio de sesión, sin importar el rol. El código que has compartido parece estar en el camino correcto, pero hay algunas diferencias con el ejemplo proporcionado en la clase.
En el código que compartiste, estás utilizando el método authorizeHttpRequests
en lugar de authorizeRequests
que se muestra en el ejemplo de la clase. Además, estás utilizando permitAll
en lugar de authenticated
para las solicitudes que no están bajo /api/**
.
Aquí te dejo una versión modificada de tu código, basada en el ejemplo de la clase, que debería cumplir con tus requisitos:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http.csrf().disable()
.authorizeRequests(requests -> requests
.antMatchers(HttpMethod.POST, "/login").permitAll()
.antMatchers("/api/**").authenticated()
.anyRequest().authenticated()
)
.sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
.and().addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
.build();
}
En este código, estamos utilizando antMatchers
para permitir el acceso sin autenticación al endpoint de inicio de sesión y requerir autenticación para todas las demás solicitudes bajo /api/**
y para cualquier otra solicitud no mencionada anteriormente.
Espero que esta versión te ayude a lograr lo que estás buscando. ¡Buena suerte con tu proyecto!
Espero haber ayudado y buenos estudios!