2

Spring MVC で Apache Shiro を使用しようとしています。

公開する (そして保護したい) コントローラーは、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 に答える