Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Encontre un error en el codigo

Cordial saludo, hoy vivi una experiencia enriquesedora pero compleja. resulta que realice el codigo al pie d ela letra de la clase con la particularidad que se me vencio el token ya que sali a almorzar, como el token lo valide para 1 hora gtm -5 se me venció y no arrancaba, validando me enviaba errores de vencimiento de token y al gen3erar uno nuevo recibia errores 500 con la ayuda de Luri identifique que para optimizar el código deje la clase SecurityFilter así :

package med.voll.api.infra.security;

import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import med.voll.api.domain.usuario.Usuariorepository; // Asegúrate de importar UsuarioRepository
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;

import java.io.IOException;

@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 tokenJWT = recuperarToken(request);

        if (tokenJWT != null) {
            var subject = tokenService.getSubject(tokenJWT);
            var usuario = usuarioRepository.findByLogin(subject);
            System.out.println(subject);

            if (usuario != null) {
                var authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
                SecurityContextHolder.getContext().setAuthentication(authentication);
            }
        }
        filterChain.doFilter(request, response);
    }

    private String recuperarToken(HttpServletRequest request) {
        var authorizationHeader = request.getHeader("Authorization");
        if (authorizationHeader != null) {
            return authorizationHeader.replace("Bearer ", "");
        }
        return null;
    }
}

Gracias a estas modificaciones que evaluarn con un if quie el token sea diferente de null y aplicando una autenticacion logre correr. Luri me reconoció que luego del vencimiento del token hay un error de implementeacion una vez se vence el token con el Header del mismo.

mil gracias por esta experiencia. quiero aprender mas por mi bienestar