2012-02-16 67 views
2

我想在Spring MVC中使用Apache Shiro。Spring MVC MultiActionController和Apache Shiro

我们公开(并且想要保护)的控制器扩展MultiActionController。 我已经配置阿帕奇四郎为Spring的方式,他们在这里形容它:http://shiro.apache.org/spring.html

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

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

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

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

或者还有其他解决方案来解决这个问题吗?

在此先感谢

回答

0

您将需要配置的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

+0

非常感谢你:)我使用的编译时编织和一切正常。顺便说一句,有什么理由使用加载时间编织而不是编译时织入? – 2012-02-17 14:39:30

+0

@Michał唯一的原因可能是你不想花时间在这个任务上。这两种方法都很好。 – 2012-03-12 17:48:47

+0

因此,在Spring(MVC)容器中使用注释的apache shiro'1.2.0'依然依赖于AspectJ。因为在我们仍然需要添加aspectj依赖于lib文件夹,这里解释http://stackoverflow.com/questions/7743749/shiro-authorization-permission-check-using-annotation-not-working#answer-8305355? – 2012-09-22 17:19:25

相关问题