Session 使用Vaadin Flow webapp处理全球所有布局和跨;路线;网址 瓦丁8
在vaadin8中,在我的Session 使用Vaadin Flow webapp处理全球所有布局和跨;路线;网址 瓦丁8,session,login,vaadin,vaadin-flow,Session,Login,Vaadin,Vaadin Flow,在vaadin8中,在我的UI子类中,我通过检查用户的会话是否带有一个属性来处理登录,该属性记录了用户是否成功登录。如果不是,myUI子类将显示一个登录布局,而不是带有导航选项的其他内容,如菜单栏和切换该UI内布局的按钮 瓦丁10+ 在Vaadin 10及更高版本中,该类显然是由Vaadin以一种对应用程序开发人员透明的方式自动处理的。现在建议使用@Route和Router类方法作为表单之间导航的方式,由附加到每个布局的不同URL驱动。一个好处是用户能够以友好的网络风格在应用程序中为某个位置添加
UI
子类中,我通过检查用户的会话是否带有一个属性来处理登录,该属性记录了用户是否成功登录。如果不是,myUI
子类将显示一个登录布局,而不是带有导航选项的其他内容,如菜单栏和切换该UI内布局的按钮
瓦丁10+
在Vaadin 10及更高版本中,该类显然是由Vaadin以一种对应用程序开发人员透明的方式自动处理的。现在建议使用@Route
和Router
类方法作为表单之间导航的方式,由附加到每个布局的不同URL驱动。一个好处是用户能够以友好的网络风格在应用程序中为某个位置添加书签
全局检查
➥ 在Vaadin Flow中,在显示任何其他内容之前,如何处理用户登录的全局检查
子类UI
,如Vaadin 8
我是否应该遵循vaadin8方法,编写UI
的子类?如果是这样,如何安装我的UI
子类来代替显然由Vaadin流自动放置的UI
我是否遵循示例中的Servlet定义,如中所述
beforeinterevent
或者我应该使用中讨论的beforeinterevent
?虽然页面顶部简要提到了侦听器在UI
实例上启动,但页面其余部分的示例涉及布局上的代码,而不是UI
。因此,我不知道如何在我的应用程序中定义的所有当前和未来布局中处理全局检查
我的问题与存储密码、凭据、哈希和salt等无关。我想问的是如何优雅地检查登录是否已完成,以阻止/授予对Vaadin web app内容的访问权。有两种不同的选择可能对您有用,这取决于您构建应用程序的方式
。这是一种非常简单的方法,只要整个应用程序只有一个主布局。一个缺点是不会检查任何未配置为直接或间接使用主布局的@Route
类
RouterLayout.showRouterLayoutContent
(而不是依赖默认实现),并在那里进行检查。这同样只在主布局实际用于所有视图时有效,但如果中间有中间布局,则可能会遇到挑战AbstractView
类,该类对每个实例单独进行访问控制。这再次要求您记住对所有路线始终使用AbstractView
。由于需要一个VaadinServiceInitListener
来添加一个UIInitListener
来添加实际的侦听器,因此设置起来有点复杂。(手册和中介绍了如何设置这些侦听器。)另一方面,这种方法能够拦截任何导航事件,而不考虑布局嵌套,并且不需要特殊的视图类
我找不到
AbstractView
接口或抽象类(从上面的第3页),我的目的是让您专门为您的应用程序创建自己的AbstractView
类。我对我的答案做了一个小的编辑,希望能让它更清楚一点。如何实现第四个备选方案:演示项目:@enkara做任何事UI
-基于Vaadin 14中的不切实际,因为UI
实例被迅速替换,有时在几秒钟内,一个接一个,没有尽头。我不知道比版本10到13更多或更少的频率。我所知道的是,在几个小时的试验中,@PWA
打开或关闭,@preserveonfresh
打开或关闭,Jetty 9或10,以及Vaadin 14.0.1/2/3/4/5与14.1.0.alpha1/2,我一直无法找到任何UI对象稳定的配置(意味着每个会话一个实例)。