Обработка исключений в Hybris - PullRequest
1 голос
/ 09 июля 2020

Я пытаюсь создать новый фильтр, в котором я добавляю AuthenticationException в тело метода doFilter

public void doFilter(...){
     if( something )
     {
        throw new AuthenticationException("...");
     }
}

Как я могу обработать это исключение, чтобы избежать Server Error с витрины в случай, когда выбрасывается исключение? Есть ли что-то вроде @ControllerAdvice от Spring?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Только для того, чтобы прояснить это, есть несколько возможностей выполнения «Обработки исключений» в проекте Spring. Вот очень хорошая документация от baeldung о различных решениях. baeldung-link

Теперь вы явно спрашиваете «лучшее было в Hybris». Я бы сказал, что нет. Hybris выдает только исключения. Взгляните на BaseSiteMismatchException, которое вставлено в BaseSiteCheckFilter. И теперь это ваше решение, если и как с этим справиться.

Но главный вопрос в том, почему вы хотите использовать здесь исключение? Разве не имеет смысла установить статус ответа на 401?

1 голос
/ 09 июля 2020

Вам нужно установить HTTP-статус ответа вместо возврата исключений.

@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
  final HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
  httpServletResponse.setStatus(401);
  httpServletResponse.sendError(401);
  httpServletResponse.getWriter().write("401 Authentication needed");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...