Так что я смог заставить Apache Shiro работать с Guice (благодаря ShiroWebModule) на Vaadin. Аннотации Широ (@RequiresAuthentication
, @RequiresPermission
) работают только в основном классе приложения Vaadin и внутри пользовательских классов. Они не работают внутри классов CustomComponent/Window.
Я попытался внедрить классы Window в класс Application с провайдерами через 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() {
}
}