4

瓦丁 8

在 Vaadin 8 中,在我的UI子类中,我通过检查用户会话是否带有一个属性来处理登录,该属性指出他们是否已成功登录。如果没有,我的UI子类会显示登录布局,而不是带有导航选项的其他内容,例如菜单栏和在该 UI 中切换布局的按钮。

瓦丁 10+

在 Vaadin 10 及更高版本的Vaadin Flow中,UI该类显然是由 Vaadin 以对我应用程序开发人员透明的方式自动处理的。现在建议使用@RouteRouter类方法作为在表单之间导航的方式,由附加到每个布局的不同 URL 驱动。一个好处是用户能够在应用程序中以友好的网络风格为位置添加书签。

全局检查

➥ 在 Vaadin Flow 中,如何在显示任何其他内容之前处理全局检查用户是否已登录?

子类UI,如 Vaadin 8 中的

我应该遵循 Vaadin 8 的方法,编写一个子类UI吗?如果是这样,如何安装我的子类来UI代替UI显然是由 Vaadin Flow 自动放置的?

我是否遵循手册中显示的带有 Servlet 定义的示例,以及在其他问题中所讨论的?

BeforeEnterEvent

或者我应该对路由生命周期教程BeforeEnterEvent中讨论的内容做些什么?虽然该页面的顶部简要提到了在实例上触发的侦听器,但页面其余部分的示例涉及布局上的代码而不是. 所以我不明白如何在我的应用程序中定义的所有当前和未来布局中处理全局检查。UIUI


我的问题与存储密码、凭据、哈希和盐等无关。我在询问一种优雅地检查登录是否已完成以阻止/授予对 Vaadin Web 应用程序内容的访问权限的方法。

4

1 回答 1

2

有几个不同的替代方案可能对您有用,这取决于您构建应用程序的方式。

  1. 使您的主要布局类实现BeforeEnterObserver。只要整个应用程序只有一个主布局,这是一种非常简单的方法。@Route一个缺点是,对于您未配置为直接或间接使用主布局的任何类都不会进行检查。
  2. 在您的主布局中实现RouterLayout.showRouterLayoutContent(而不是依赖于默认实现),并在那里进行检查。这仅在主布局实际用于所有视图时才有效,但如果在两者之间有中间布局,则可能具有挑战性。
  3. 定义您自己的AbstractView类,为每个实例自行进行访问控制。这再次要求您记住始终使用AbstractView所有路线。
  4. 注册一个BeforeEnterListener执行访问检查的 UI 范围。设置起来有点复杂,因为您需要VaadinServiceInitListener添加 aUIInitListener来添加实际侦听器。(设置这些侦听器在此处此处的手册中进行了描述。)另一方面,这种方法能够拦截任何导航事件,而无需考虑布局嵌套并且不需要特殊的视图类。
于 2018-11-12T09:34:04.787 回答