Com o filtro criado e estendido da classe OncePerRequestFilter, toda requisição irá passar por ele, como mostrado na video aula, ou seja até o caminho /auth passará por ele, teria como pular os paths sem autenticação?
Bem meu caso é que gostaria de lançar um exeption caso o token não fosse valido,
Validação do Token:
public boolean isTokenValido(String authToken) {
try {
Jwts.parser().setSigningKey(secret).parseClaimsJws(authToken);
return true;
} catch (SignatureException ex) {
//return ResponseEntity(new ErroResponseDto("Forbidden", Collections.singletonList("Invalid JWT signature")), HttpStatus.FORBIDDEN);
logger.error("Invalid JWT signature");
//throw new InvalidJwtAuthenticationException("Invalid JWT signature");
} catch (MalformedJwtException ex) {
logger.error("Invalid JWT token");
//throw new InvalidJwtAuthenticationException("Invalid JWT token");
} catch (ExpiredJwtException ex) {
logger.error("Expired JWT token");
//throw new InvalidJwtAuthenticationException("Expired JWT token");
} catch (UnsupportedJwtException ex) {
logger.error("Unsupported JWT token");
//throw new InvalidJwtAuthenticationException("Unsupported JWT token");
} catch (IllegalArgumentException ex) {
logger.error("JWT claims string is empty.");
//throw new InvalidJwtAuthenticationException("JWT claims string is empty.");
}
return false;
}
Custom Handler:
@ExceptionHandler(InvalidJwtAuthenticationException.class)
public final ResponseEntity<ErroResponseDto> handleInvalidJwtAuthenticationException(Exception e, HttpServletRequest request) {
List<String> details = new ArrayList<>();
details.add(e.getLocalizedMessage());
ErroResponseDto error = new ErroResponseDto(request.getRequestURI(), "Erro Token!", details);
return new ResponseEntity<>(error, HttpStatus.FORBIDDEN);
}