//
// ошибки в процессе логина не ловятся ControllerAdvice, поэтому на клиента поедет страничка с кодом
// 404
// ну а нам нужен JSON - вот и сделаем JSON
//
public class Resp401BasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {
  LoggerWrapper LOG = LoggerWrapper.get(Resp401BasicAuthenticationEntryPoint.class);

  @Override
  public void commence(
      HttpServletRequest request,
      HttpServletResponse response,
      AuthenticationException authException)
      throws IOException, ServletException {
    //        if( authException instanceof InsufficientAuthenticationException) {
    //           return;
    //       }
    response.addHeader("Access-Control-Allow-Origin", "null");
    response.addHeader("WWW-Authenticate", "Basic realm=\"" + getRealmName() + "\"");
    response.addHeader("Content-Type", "application/json");
    response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);

    PrintWriter writer = response.getWriter();

    ObjectMapper mapper = new ObjectMapper();
    ErrorInfo errorInfo =
        new ErrorInfo(HttpServletResponse.SC_UNAUTHORIZED, authException.getLocalizedMessage());
    String jsonError = mapper.writeValueAsString(errorInfo);
    writer.println(jsonError);
    LOG.info("result = " + jsonError);
  }
}
示例#2
0
 private void performLogging(String message) {
   // TODO
   LoggerWrapper.get().errorLog("GeneralCustomException: " + message);
 }