2012-02-16 1 views
2

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

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

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

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

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

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

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

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

ответ

0

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

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

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

+0

большое спасибо :) Я использовал время компиляции ткачество и все работает нормально. Btw, есть ли какая-нибудь причина для использования ткачества во времени, а не для компиляции во времени? –

+0

@ Michał Единственная причина может заключаться в том, что вы не хотите тратить время на выполнение этой задачи. Любой подход - это хорошо. –

+0

SO as of apache shiro '1.2.0', используя аннотацию в контейнере весны (MVC), все еще зависит от AspectJ. как и в нашем случае, нам нужно добавить зависимость asjj к папке lib, как описано здесь http://stackoverflow.com/questions/7743749/shiro-authorization-permission-check-using-annotation-not-working#answer-8305355? –