【问题标题】:Spring MVC MultiActionController and Apache ShiroSpring MVC MultiActionController 和 Apache Shiro
【发布时间】:2012-03-08 05:55:06
【问题描述】:

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

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

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

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

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

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

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

提前致谢

【问题讨论】:

    标签: spring-mvc aop spring-aop shiro


    【解决方案1】:

    您需要为编译时或运行时编织配置 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

    【讨论】:

    • 非常感谢 :) 我使用了编译时编织,一切正常。顺便说一句,是否有任何理由使用加载时编织而不是编译时编织?
    • @Michał 唯一的原因可能是您不想在此任务上花费构建时间。两种方法都可以。
    • 从 apache shiro 1.2.0 开始,在 spring(MVC) 容器中使用注释仍然依赖于 AspectJ。因为我们仍然需要将 aspectj 依赖项添加到 lib 文件夹中,如此处所述 stackoverflow.com/questions/7743749/… ?
    猜你喜欢
    • 2015-09-18
    • 2014-08-31
    • 2016-07-30
    • 2011-07-20
    • 2017-11-24
    • 1970-01-01
    • 2016-12-17
    • 2017-01-05
    • 2018-09-03
    相关资源
    最近更新 更多