我正在尝试将Apache Shiro与Spring MVC一起使用。
我们公开(并且想要保护)的控制器扩展MultiActionController。 我已经按照他们在这里描述的方式配置了Apache Shiro for Spring:http://shiro.apache.org/spring.html
我想在我的控制器方法上使用@RequiresRoles注释,但它不起作用......
它没有在日志中给出任何错误,从我在调试中看到的看起来好像只检查来自AbstractController(MultiActionController的超类)的handleRequest方法的注释。
从handleRequest到我的带注释方法的“内部”调用不是通过代理调用的,因此不会检查Shiro注释。
我可以以某种方式调用我的方法通过代理,尽管它是调用与调用者相同的对象的方法吗?
或者这个问题还有其他解决办法吗?
提前致谢
答案 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