Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro 500

Erro na validação do tokenInsira aqui a descrição dessa imagem para ajudar na acessibilidade

7 respostas

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);
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

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 ", "");
}
solução!

Obrigada Professor, o erro não era esse, mas consegui consertar