Как я могу изменить формат отметки времени моего тела ответа на отметку времени Unix? - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть класс исключений, помеченный @ResponseStatus, поэтому, когда я выбрасываю это исключение, возвращается конкретный ответ.Он работает нормально, но у меня есть проблема с отметкой времени: "отметка времени": "2019-02-12T13: 33: 26.540 + 0000" Я хотел бы иметь отметку времени в секундах Unix "1550038291".Как я могу изменить, чтобы в ответе использовались миллисекунды?

@ResponseStatus(value = HttpStatus.UNAUTHORIZED, reason = "Invalid authorization")
public class AuthorizationException extends RuntimeException {}
{
  "timestamp": "2019-02-12T13:33:26.540+0000",
  "status": 401,
  "error": "Unauthorized",
  "message": "Invalid authorization",
  "path": "/my-endpoint"
}

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

application.yml

запись даты-времени-отметки = true

результат

0 голосов
/ 13 февраля 2019

Вы можете создать собственную реализацию этого интерфейса для изменения ответа - AuthenticationFailureHandler

@Component
public class CustomAuthenticationFailureHandler implements AuthenticationFailureHandler
{
  @Override
  public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
      AuthenticationException ex) throws IOException, ServletException
  {
    response.setStatus(HttpStatus.UNAUTHORIZED.value());

    Map<String, Object> data = new HashMap<>();
    data.put("timestamp", Calendar.getInstance().getTimeInMillis()); // you can format your date here 
    data.put("status",HttpStatus.UNAUTHORIZED.value());
    data.put("message", "You are not authorized.");
    data.put("path", request.getRequestURL().toString());

    OutputStream out = response.getOutputStream();
    com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
    mapper.writeValue(out, data);
    out.flush();
  }
}

Вам необходимо настроить этот класс CustomAuthenticationFailureHandler.java.

@Configuration
@EnableWebSecurity
@ComponentScan("your.base.package")
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
 @Override
protected void configure(final HttpSecurity http) throws Exception {
    http.exceptionHandling().accessDeniedHandler(accessDeniedHandler())
    ;
}

@Bean
public AccessDeniedHandler accessDeniedHandler() {
    return new CustomAuthenticationFailureHandler();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...