そのため、Vaadin で Apache Shiro を Guice と連携させることができました (ShiroWebModule のおかげです)。Shiro アノテーション ( @RequiresAuthentication
、@RequiresPermission
) は、メインの Vaadin Application クラスおよびカスタム クラス内でのみ機能します。CustomComponent/Window クラス内では機能しません。
プロバイダーを使用して Application クラスに Window クラスを挿入しようとしましたが、injector.getInstance
それでも機能しません...
私は Guice と Shiro を初めて使用するので、何か不足している可能性がありますか?
他のカスタム クラスで機能するのはなぜですか? これは期待どおりに機能します (例外がスローされます)
public class TestClassImpl implements TestClass {
@Override
public void doSomeWork() {
//this will throw an exception as expected
test();
}
@RequiresAuthentication
public void test() {
}
}
これは期待どおりに動作しません (メソッドが実行され、Apache Shiro アノテーションは無視されます)。
public class LoginView extends CustomComponent {
public LoginWindow() {
setCompositionRoot(mainLayout);
//this will execture but it should not
test();
}
@RequiresAuthentication
public void test() {
}
}