Erro na validação do token
Erro na validação do token
Oi!
Na sua classe Securityfilter
, no método:
private String recuperarToken(HttpServletRequest request) {
var authorizationHeader = request.getHeader("Authorization");
if(authorizationHeader == null){
throw new RuntimeException("Token não enviado no cabeçalho Authorization!");
}
return authorizationHeader.replace("Bearer ", "");
}
Não pode lançar exception se o token estiver null, pois isso torna o envio do token obrigatório, mas tem requisições em que o token não será enviado, como na requisição de efetuar login, que é justamente a requisição para se obter um token.
Altere para:
private String recuperarToken(HttpServletRequest request) {
var authorizationHeader = request.getHeader("Authorization");
if(authorizationHeader == null) {
return null;
}
return authorizationHeader.replace("Bearer ", "");
}
Vai precisar alterar a lógica do outro método também, para tratar no caso do token estar null:
@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);
System.out.println(subject);
}
filterChain.doFilter(request, response);
}
fiz as alterações que me passou, mas continua dando erro
Acho que nesse método que mandei na mensagem anterior está com dois espaços em branco após a palavra Bearer:
private String recuperarToken(HttpServletRequest request) {
var authorizationHeader = request.getHeader("Authorization");
if(authorizationHeader == null) {
return null;
}
return authorizationHeader.replace("Bearer ", "");
}
Altere para:
private String recuperarToken(HttpServletRequest request) {
var authorizationHeader = request.getHeader("Authorization");
if(authorizationHeader == null) {
return null;
}
return authorizationHeader.replace("Bearer ", "");
}
Obrigada Professor, o erro não era esse, mas consegui consertar