Главная страница моего Vaadin 14 - это MainView с маршрутом root.
MainView
используется в качестве «шаблона» для другого представления (с layout = MainView.class
), поэтому я вижу его больше как «абстрактное» представление, которое не должно инициализироваться само по себе и используется только для другие представления как макет.
Теперь проблема: если пользователь обращается к MainView
, BeforeEnterEvent
называется ПОСЛЕ конструктора . Это может привести к возникновению исключений, потому что пользователь еще не аутентифицирован, а конструктор выполняет такие вещи, как создание вкладок.
Есть ли способ запретить пользователю доступ к маршруту MainView или событие, которое выполняется перед вызовом конструктора? Доступ к представлению разрешен только при аутентификации пользователя.
@Route("")
public class MainView extends AppLayout implements BeforeEnterObserver {
public MainView() {
super();
// Creates all the Tabs that are used in the MainView, may throw exception if the user calls the URL of this View before authenticated
setupView();
}
...
@Override
public void beforeEnter(BeforeEnterEvent event) {
// Reroute to Login if User is NOT authenticated
}
}
@Route(value = "foo", layout = MainView.class)
public class OtherView {
Обновление:
Исправление выпущен в качестве экспериментальной функции в Vaadin 14.2 .