No método autenticarCliente, quando pesquiso o usuário pelo Id, acontece uma Exception
Isso acontece na classe de Autenticação via Token:
public class AutenticacaoViaTokenFilter extends OncePerRequestFilter {
private TokenService tokenService;
private UsuarioRepository usuarioRepository;
public AutenticacaoViaTokenFilter(TokenService tokenService, UsuarioRepository usuarioRepository) {
this.tokenService = tokenService;
this.usuarioRepository = usuarioRepository;
}
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String token = recuperarToken(request);
Boolean valido = tokenService.isTokenValido(token);
if (valido) {
autenticarCliente(token);
}
filterChain.doFilter(request, response);
}
private void autenticarCliente(String token) {
Long idUsuario = tokenService.getIdUsuario(token); // DENTRO DO TOKEN HÁ O ID DO USUÁRIO QUE GEROU ESSE TOKEN
Usuario usuario = usuarioRepository.findById(idUsuario).get();
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(usuario, null, usuario.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
}
private String recuperarToken(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token == null || token.isEmpty() || !token.startsWith("Bearer ")) {
return null;
} else {
return token.substring(7, token.length());
}
}
}