Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Proyecto] Duda con el código

Con relación a las personas de la nueva versión de Spring Boot quería saber si este código estaba correcto, necesito que me pida autentificación para la api completa, pero no para el login, sin importar el Rol @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { return http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(request -> request.requestMatchers(STRINGS).permitAll() .requestMatchers("/api/**").authenticated()) .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .build();

}

Me gustaría saber si alguien podría revisarmelo

1 respuesta

¡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!