Spring WebMVC: перехватчик, который имеет доступ к определению метода и HttpServletRequest - PullRequest
3 голосов
/ 16 ноября 2010

Я пытаюсь перехватить аннотированные вызовы Spring Controller, например:

@RequestMapping("/my/page")
@AccessRestriction(module = Module.Audit, action = AuditActions.Log)
public ModelAndView myPage() {
   // pls type teh codez
} 

На данный момент я хочу получить доступ к обоим значениям метода @AccessRestriction, объекта HttpServletRequestпроверить, соответствуют ли значения ограничениям и объекту HttpServletResponse, чтобы отправить перенаправление, если применимо.Может также подойти и возможность генерировать исключение.

Я изучил Перехватчики , но они не предоставляют доступ к методу, только к обработчику.Каковы мои варианты достижения этого?

1 Ответ

3 голосов
/ 16 ноября 2010

Мое предложение состояло бы в том, чтобы разделить две проблемы, одну для проверки аннотации и создания исключения, другую для перехвата этого исключения и перевода его в перенаправление.

Первая проблема может быть выполнена с использованием Средство авто-прокси , которое применяет перехватчик в стиле AOP к любым вызовам объектов вашего контроллера.Они будут проверять аннотацию, проверять вызов и выбрасывать пользовательский RuntimeException, если условия нарушены.

Затем вы можете иметь пользовательский HandlerInterceptor, который проверяет это исключение в методе afterCompletionотправка перенаправления через объект ответа, если он присутствует.

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