2012-02-16 88 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