Вы можете перехватить это исключение и выбросить в качестве ответа об ошибке в фильтре.
@Component
public class AuthenticationFilter implements Filter {
@Autowired
private ObjectMapper objectMapper;
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
try {
if(basicAuthenticationFails) { // Your Authentication Logic
throw new UnAuthorizedException("Error while processing");
}
chain.doFilter(request, response);
} catch (UnAuthorizedException e) { // Create a custom exception for this.
((HttpServletResponse) response).sendError(HttpStatus.UNAUTHORIZED.value(), "UnAuthorized);
}
}
}
Это вернет json, как показано ниже,
{
"timestamp":"2019-07-08T05:47:34.870+0000",
"status":401,
"error":"Unauthorized",
"message":"UnAuthorized",
"path":"/foo"
}
Вы также можете отправить ошибку, создавclass
,
try {
// Logic
} catch (UnAuthorizedException e) {
((HttpServletResponse) response).setStatus(HttpStatus.BAD_GATEWAY.value());
response.getWriter().write(objectMapper.writeValueAsString(new ErrorResponse(e.getMessage())));
}