В моем приложении используется типичный процесс аутентификации JWT. Я могу отловить большинство ошибок токена, но когда пользователь отправляет неверный токен-носитель (например, ads.asd.d
), выдается CharConversionException
.
java.io.CharConversionException: Not an ISO 8859-1 character: [�]
Проблема в том, что я могу не пойму. Я получаю эту ошибку.
exception java.io.CharConversionException is never thrown in body of corresponding try statement
Класс фильтра:
public class JwtRequestFilter extends OncePerRequestFilter {
@Autowired
private MyUserDetailsService userDetailsService;
@Autowired
private JwtUtil jwtUtil;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException, MalformedJwtException, CharConversionException {
final String authorizationHeader = request.getHeader("Authorization");
String username = null;
String jwt = null;
try {
if (authorizationHeader != null && authorizationHeader.startsWith("Bearer ")) {
jwt = authorizationHeader.substring(7);
username = jwtUtil.extractUsername(jwt);
}
} catch (MalformedJwtException e) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return;
} catch (CharConversionException e) {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
return;
}
...
chain.doFilter(request, response);
}
Есть идеи, как я могу поймать это исключение?