Ao Enviar uma requisição HTTP GET solicitando a lista de médicos mandando o token gerado estou recebendo esse erro:
java.lang.NullPointerException: Cannot invoke "med.voll.api.infra.security.TokenService.getSubject(String)" because "this.tokenService" is null
at med.voll.api.infra.security.SecurityFilter.doFilterInternal(SecurityFilter.java:31) ~[classes/:na]
O erro informa que ao chamar var subject = tokenService.getSubject(tokenJWT) está retornando null.
Já tentei algumas as sugestões do curso para correção porem sem sucesso =/
Segue trecho do código do SecurityFilter:
@Component
public class SecurityFilter extends OncePerRequestFilter {
@Autowired
private TokenService tokenService;
@Autowired
private UsuarioRepository repository;
@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 = repository.findByLogin(subject);
var authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
filterChain.doFilter(request, response);
}
Trecho do código do TokenService:
public String getSubject(String tokenJWT) {
try {
var algoritmo = Algorithm.HMAC256(secret);
return JWT.require(algoritmo)
.withIssuer("API Voll.med")
.build()
.verify(tokenJWT)
.getSubject();
} catch (JWTVerificationException exception) {
throw new RuntimeException("Token JWT inválido ou expirado!");
}
}
Aqui está o link do git caso precise, desde já obrigado!!!!!!! https://github.com/AguiarIsaac/API_Alura_Curso_Java