Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

Problemas en el Controller de autenticación

Buen día compañeros.
Acudo respetuosamente a ustedes por ayuda con este problema que no he podido solucionar.

Estoy en el video Controller de autenticación, y tengo problemas con la implementación del método SecurityFilterChain, de la clase SecurityConfigurations. He intentado varais sugerencias del chat de discord y no obtengo los resultados que muestra el instructor en el video, donde desde insomnia se ejecuta la quiery select del login.

Si estas dudas del foro las lee algún instructor, le agradecería su gentil ayuda. Pues, creo que falta la ayuda de un instructor en el chat, no veo en el chat el apoyo de un instructor.

De antemano, le expreso mi más sincero agradecimiento.

Estaré atento a este foro y al discord por alguna respuesta. En discord me encuentran identificado como Anggel.

Aquí algunas implementaciones que he usado, pero sin el resultado esperado.

@Bean public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {

    /*return httpSecurity.csrf(AbstractHttpConfigurer::disable)
            .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
            *//*.authorizeHttpRequests(auth -> auth.requestMatchers("HttpMethod.POST", "/login").permitAll()
                    .requestMatchers("/v3/api-docs/**", "/swagger-ui.html", "/swagger-ui/**").permitAll()
                    .requestMatchers(HttpMethod.DELETE, "/medicos").hasRole("ADMIN")
                    .requestMatchers(HttpMethod.DELETE, "/pacientes").hasRole("ADMIN")
                    .anyRequest().authenticated())
            .addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)*//*
            .build();*/

    /*return httpSecurity
            .csrf(AbstractHttpConfigurer::disable)
            .sessionManagement(session -> session
                    .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            )
            .authorizeHttpRequests(authorizeHttpRequests -> authorizeHttpRequests
                    .requestMatchers(HttpMethod.POST, "/users")
                    .permitAll()
                    .anyRequest()
                    .authenticated()
            )
            .addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
            .build();*/

  /*  httpSecurity
            // ...

// .csrf(AbstractHttpConfigurer::disable) // .sessionManagement((session) -> session .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS) // .sessionCreationPolicy(SessionCreationPolicy.STATELESS) ); return httpSecurity.build();*/

    /*httpSecurity
            // ...
            .securityContext((securityContext) -> securityContext
                    .requireExplicitSave(true)
            );
    return httpSecurity.build();*/

    /*return httpSecurity.csrf().disable().sessionManagement()
            .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().build();*/

    /*return httpSecurity.csrf(AbstractHttpConfigurer::disable)
            .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS)).build();*/

}
2 respuestas

Hola Angel,

Entiendo que estás teniendo problemas con el método SecurityFilterChain en la clase SecurityConfigurations. Por lo que veo, has intentado varias implementaciones pero ninguna ha dado el resultado esperado.

La implementación correcta de este método puede variar dependiendo de las necesidades específicas de tu aplicación, pero aquí te dejo un ejemplo de cómo podría ser:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
    return httpSecurity
        .csrf(AbstractHttpConfigurer::disable)
        .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(auth -> auth
            .antMatchers(HttpMethod.POST, "/login").permitAll()
            .antMatchers("/v3/api-docs/**", "/swagger-ui.html", "/swagger-ui/**").permitAll()
            .anyRequest().authenticated())
        .addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
        .build();
}

En este ejemplo, estamos deshabilitando CSRF, estableciendo la política de creación de sesión en STATELESS (lo que significa que no se mantendrá ninguna sesión entre las solicitudes), permitiendo todas las solicitudes POST a "/login" y todas las solicitudes a ciertos endpoints de documentación, y requiriendo autenticación para todas las demás solicitudes. También estamos agregando un filtro personalizado antes del filtro de autenticación de nombre de usuario/contraseña.

Por favor, asegúrate de reemplazar "securityFilter" con la instancia real de tu filtro personalizado. Si aún tienes problemas después de intentar esto, por favor proporciona más detalles sobre el error que estás experimentando.

Espero haber ayudado y buenos estudios!

solución!

Gracias por estar prestos a ayudarme. Aprecio mucho toda su colaboración.

Hemos encontrando el problema y era en la inyección del POST.