Spring MVC MultiActionController和Apache Shiro

时间:2012-02-16 19:43:08

标签: spring-mvc aop spring-aop shiro

我正在尝试将Apache Shiro与Spring MVC一起使用。

我们公开(并且想要保护)的控制器扩展MultiActionController。 我已经按照他们在这里描述的方式配置了Apache Shiro for Spring:http://shiro.apache.org/spring.html

我想在我的控制器方法上使用@RequiresRoles注释,但它不起作用......

它没有在日志中给出任何错误,从我在调试中看到的看起来好像只检查来自AbstractController(MultiActionController的超类)的handleRequest方法的注释。

从handleRequest到我的带注释方法的“内部”调用不是通过代理调用的,因此不会检查Shiro注释。

我可以以某种方式调用我的方法通过代理,尽管它是调用与调用者相同的对象的方法吗?

或者这个问题还有其他解决办法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

您需要为编译时或运行时编织配置AspectJ。这是我在Spring中知道的唯一方法,可以对不是基于接口的代理的实例强制执行注释。

Shiro有一个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