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)
1
respuesta

Recursion infinita StackOverflowError

Hola todos tengo este error StackOverflowError, hay una recursión infinita o muy profunda en tu código. En tu caso, parece que el problema podría estar en la forma en que se manejan las peticiones en el filtro de seguridad SecurityFilter. esto de acuerdo a una consulta que le hice a chatGpt, pero el error sigue cambios en mi SecurityFilter

@Component
public class SecurityFilter extends OncePerRequestFilter {

    @Autowired
    private TokenService tokenService;

    @Autowired
    private UsuarioRepository usuarioRepository;

    @Override
    protected void doFilterInternal(
            HttpServletRequest request,
            HttpServletResponse response,
            FilterChain filterChain
    ) throws ServletException, IOException {
        var authHeader = request.getHeader("Authorization");
        if(authHeader != null && authHeader.startsWith("Bearer ")){
            var token = authHeader.replace("Bearer ", "").trim();
            var subject = tokenService.getSubject(token);
            if(subject != null){
                var usuario = usuarioRepository.findByCorreoElectronico(subject);
                if(usuario != null){
                    var authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
                    SecurityContextHolder.getContext().setAuthentication(authentication);
                }
            }
        }
        filterChain.doFilter(request, response);
    }
}

pero igual sigue el erro

java.lang.StackOverflowError: null
    at org.springframework.aop.support.AopUtils.isEqualsMethod(AopUtils.java:162) ~[spring-aop-6.1.10.jar:6.1.10]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:175) ~[spring-aop-6.1.10.jar:6.1.10]
    at jdk.proxy4/jdk.proxy4.$Proxy146.authenticate(Unknown Source) ~[na:na]
1 respuesta
solución!

¡Hola David, espero que estés bien!

Duda: ¿Qué curso y actividad estás haciendo con Java?

Entiendo que estás experimentando un error de StackOverflowError en tu código, específicamente en tu clase SecurityFilter. El error parece estar relacionado con la recursión infinita en el método doFilterInternal.

Una posible causa de este problema es que al establecer la autenticación, se está generando un bucle infinito que conduce al desbordamiento de la pila (StackOverflowError).

Una forma de abordar este problema es asegurarte de que la autenticación se establezca de manera adecuada y que no genere llamadas recursivas infinitas. Podrías revisar la configuración de autenticación y asegurarte de que no esté causando un bucle infinito.

Además, el error que estás viendo en el log parece estar relacionado con la librería de Spring AOP. Podrías revisar si hay algún aspecto de programación (AOP) que esté interfiriendo con la autenticación y causando el error.

Espero que estas sugerencias te ayuden a resolver el problema. ¡Buena suerte!

Espero haber ayudado y buenos estudios!