2

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

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

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

它不会在日志中给出任何错误,从我在调试中看到的情况来看,似乎只检查了 AbstractController(MultiActionController 的超类)中的 handleRequest 方法的注释。

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

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

或者有没有其他解决这个问题的方法?

提前致谢

4

1 回答 1

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

于 2012-02-16T22:16:04.777 回答