Spring MVC MultiActionController и Apache Shiro - PullRequest
2 голосов
/ 16 февраля 2012

Я пытаюсь использовать Apache Shiro с Spring MVC.

Контроллеры, которые мы выставляем (и хотим защитить), расширяются MultiActionController . Я настроил Apache Shiro для Spring так, как они описывают здесь: http://shiro.apache.org/spring.html

Я хотел использовать аннотацию @RequiresRoles в моем методе контроллера, но он не работает ...

Это не дает никакой ошибки в журналах, из того, что я видел в отладке, это выглядит так, как будто только метод handleRequest из AbstractController (суперкласс MultiActionController) проверяется на аннотации.

«Внутренний» вызов из handleRequest моего аннотированного метода не вызывается через прокси-сервер, поэтому проверка аннотаций Shiro отсутствует.

Могу ли я как-нибудь сделать так, чтобы вызов моего метода проходил через прокси, несмотря на тот факт, что это вызов метода того же объекта, что и вызывающий объект?

Или есть другое решение этой проблемы?

Заранее спасибо

1 Ответ

0 голосов
/ 17 февраля 2012

Вам потребуется настроить AspectJ для ткачества во время компиляции или во время выполнения. Это единственный известный мне в Spring способ применять аннотации к экземплярам, ​​которые не являются прокси-серверами на основе интерфейса.

У Широ есть пример проекта AspectJ, идеи которого вы можете посмотреть здесь: http://svn.apache.org/repos/asf/shiro/trunk/samples/aspectj/

Также читайте об интеграции Spring AOP и AspectJ здесь: http://static.springsource.org/spring/docs/3.1.0.RELEASE/reference/html/aop.html#aop-using-aspectj

...