Как получить исключение и сообщение из httprequest - PullRequest
0 голосов
/ 13 июня 2019
@Override
    public Authentication authenticate(Authentication authentication) throws AuthenticationException {
            if (currentUser.getStatus().equals(UserStatus.BLOCKED.toString())) {

            throw new LockedException(
                    "UserEntity.validation.status.isBlocked" );
        }

затем он выходит из строя:

@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {//TODO implement session limitations
    if (e instanceof LockedException) {
      response.sendRedirect("/user-error");
    }
}

Я отправляю сюда ошибку здесь:

@RequestMapping("/user-error")
    public String handleUserError(HttpServletRequest request) {

но я не могу получить lockedexception из этого запроса.

Я хочу отправить несколько параметров, таких как:

Map<String, Object> data = new HashMap<>();
//            data.put(
//                    "timestamp",
//                    Calendar.getInstance().getTime());

Должен ли я использовать что-то подобное?

request.setAttribute();

или

//            data.put(
//                    "exception",
//                    e.getMessage());

//
//            response.getOutputStream()
//                    .println(objectMapper.writeValueAsString(data));
//

Что мне делать?

Я могу установить с этим:

    request.setAttribute();

но, возможно, в этом нет необходимости. Потому что исключение уже есть.

Например, когда он здесь

   if (e instanceof LockedException) {
        request.setAttribute("message", e.getMessage());

в режиме отладки, я могу получить это:

request.getAttribute("message") =  "UserEntity.validation.status.isBlocked" 

но когда он идет в конечную точку, он становится нулевым

Должен ли я использовать другой параметр для этой конечной точки, как здесь: https://stackoverflow.com/a/50429613/11369236

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...