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

NO entiendo

En la siguiente funcion:

@Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        //Obtener el token del header
        var token = request.getHeader("Authorization");
        if(token == "" || token==null){
            throw new RuntimeException("El token enviado no es valido o esta vacio");
        }
        if(token != null){
            token = token.replace("Bearer ", "");
            System.out.println(token);
            System.out.println(tokenService.getSubject(token)); // Este usuario tiene session

            filterChain.doFilter(request, response);
        }

    }

No entiendo por que segun el profesor hay un error logico aqui:

 if(token == "" || token==null){
        throw new RuntimeException("El token enviado no es valido o esta vacio");
    }
    

Si lo pensamos detenidamente, antes de ejecutarse ese codigo declaramos:

 var token = request.getHeader("Authorization");
 

Osea, ya obtenemos el token, por lo que el IF mencionado arriba en teoria no deberia ejecutarse. Entonces alguien me puede explicar por que se ejecuta ese RuntimeException, incluso cuando el token si viene correcto (El profesor es muy bueno, pero hay partes donde es medio vago explicando algunas cosas, he usando luri para ver si me puede explicar el problema, pero como luri esta entrenada con los videos de alura, me dice lo mismo que el profesor :v)

1 respuesta

Prueba separando el token en vez de usar el replace para quitar lo de bearer en el documento de SecurityFilter

Este fue el Código que yo utilice: protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { var authorizationHeader = request.getHeader("Authorization"); if(authorizationHeader == null || authorizationHeader == ""){ throw new RuntimeException("El Token enviado no es valido"); } var token = authorizationHeader.split(" ")[1]; System.out.println(token); System.out.println(tokenService.getSubject(token)); filterChain.doFilter(request, response); }