如何用Jmix实现Frontend免登陆

您好,之前有发过邮件请教过如何用JMix实现免登陆.当初您提供的是CUBA的例子,我在JMix中尝试了一下部分类是在JMix中不存在的,也就是根本没有办法跑起来.后来我通过自己重写AccessManager和EntitiesControllerManager这两个Bean解决了匿名访问的问题,后续想通过再次重写AuditInfoProviderImpl的方式来将我们系统的用户信息返回到JMix中.目前我们认为虽然这种方式是可行的但是改动及安全性方面的问题较多,所以希望能不能给出一个简单的解决方案.

是需要免登录还是单点登录?

无论哪种都行.我们自身的系统登录成功后会有一个包含登录信息的cookie,用户点击菜单后会在iframe中打开JMix的生成的页面.目前我已经实现了frontend匿名访问的效果且可以将我们自身系统的用户信息生成UserDetail实例.但是这样做法虽然达成了我们的需求但是安全性方面有问题(比如这样改了之后访问Generic UI就会提示无权限了),所以这边我想请教下有没有最小改动的同时能够实现我们的需求.

是否参考了这个帖子:跟其他系統集成SSO单点登录,怎么设置
这种方式在 Jmix 下也是可行的。

2021-05-17_161552
这个我之前就有参考过,有下面几个问题:
1.ExternalUserCredentials找不到这个类
2.调用getApp方法后返回的App对象下没有getConnection方法

对,这几个类在 Jmix 中去掉了。CUBA 原有的一些特性还没有完全迁移到 Jmix 中,比如界面链接

对于你现在这个场景,通过一些定制也是可以处理的,就是麻烦一些。所以,如果使用 Vaadin UI ,而且个性化定制特别多,建议先用 CUBA 实现功能,在官方发布迁移指南后再迁移到 Jmix。

如果一定要用 Jmix ,那么这个问题请再明确一些:是要解决 frontend 的问题还是 vaadin ui 的问题?是要解决身份集成的问题还是匿名登录的问题?身份集成和匿名登录(免登录)是不同的概念。同时请注意,一个帖子中尽量缩小问题范围,避免将多个问题混在一起。有多个问题,可分多个帖子提出。

1 个帖子被拆分到新主题:我们不希望使用CUBA内置的权限校验机制甚至连表我们都不需要这部分验证由我们自己完成.所以这样可以做么?

  • 隐藏主界面的标题栏
    可以扩展 AppMainWindow ,在扩展类中override ready() 方法,在此方法中隐藏标题栏
    titleBar.setVisible(false);
    关于 主界面的布局可参考文档:根界面
    可以通过界面向导扩展主界面:image
  • 权限控制我另起一个主题了

请问未来JMix可以使用界面链接来打开一个Vaadin UI么?

应该可以,Jmix 中已经定义了相关的接口,只是还没有具体的实现。

那可以给个简单的实现方式么?

建议等待开发团队来实现。