不带弹簧的Vaadin 14中的访问控制

不带弹簧的Vaadin 14中的访问控制,vaadin,cdi,shiro,jaas,vaadin-flow,Vaadin,Cdi,Shiro,Jaas,Vaadin Flow,例如: Route - Accessable by (Roles) LoginView - Any UserView - User, Admin AdminView - Admin 在Vaadin 14中为此类场景构建访问控制的最佳实践是什么?最好在路线或配置访问控制的中心位置进行注释 所有文档似乎都是针对spring的。 他们提到vaadin cdi应该提供帮助,但事实并非如此,因此我认为这是vaadin 8中的一个人工制品 有迹象表明可以使用JAAS或Shiro,但似乎没有关于如何包含它们

例如:

Route - Accessable by (Roles)
LoginView - Any
UserView - User, Admin
AdminView - Admin
在Vaadin 14中为此类场景构建访问控制的最佳实践是什么?最好在路线或配置访问控制的中心位置进行注释

所有文档似乎都是针对spring的。 他们提到vaadin cdi应该提供帮助,但事实并非如此,因此我认为这是vaadin 8中的一个人工制品

有迹象表明可以使用JAAS或Shiro,但似乎没有关于如何包含它们的示例或任何文档。

我就这个主题写过。完整的代码可以在上找到

这并不使用注释,但是,它只是检查用户是否登录了每个视图

要使用注释,请首先创建注释或使用合适的注释。然后修改ServiceInitListener,使其除了检查用户是否经过身份验证之外,还检查其是否具有适当的角色

您可以使用
beforeEnterEvent.getNavigationTarget()
,获取导航到的视图,在那里您可以提取注释。存储和检索当前用户角色的方式取决于您的设置


上述方法没有使用任何安全框架。

如果文章失败或github repo消失,这个答案本身就没有多大用处。因此,答案中“需要”重要的部分。您能改进吗?它使用BeforeEnterEvent不是一个安全缺陷吗?在触发此侦听器时,类已经被构造,不是吗?如果能够在之前拦截,那就太好了。这个bug在一些版本之前就已经修复了,但是在文章发布之后。如果您在attach上进行初始化,这不是安全问题,但我将更新项目以使用包含修复程序的Vaadin版本。