怎么在页面上集成各个业务系统的菜单?彦祖们 贵司是如何做的

2021-12-23 09:32:07 +08:00
 az22c

全都是浏览器 web 架构。以前旧的各大业务系统已经是做好的,一开始是互相用户数据隔离的。

现在是“单点登录”已经做好了一段时间。有一个管理平台统一接管用户体系角色体系菜单体系等等的数据。

老板还是觉得单点登录仍不够方便(装逼),切换到另外一个业务系统需要打开新的标签页,每个业务系统的菜单样式各自不同。

所以想把不同业务系统的菜单都集成到同一个菜单里面,点击就能直接切换显示不同业务系统里面的菜单页面,不用弹出新的标签页

(像阿里云 web 客户端这种,就是弹出标签页的方案,并不是我们目前想要的。阿里云 web 客户端就是每个业务系统规模很大,几百个菜单都是归属于同一个系统的,但是用户能感知到的相关的业务系统数目不会很多,这样用户也能忍受次数不是很多的新标签页打开。)

(iframe 切换显示菜单页面,的确符合这个需求,目前也是使用这种来实现。但是觉得 iframe 迟早要彻底凉凉啊。而且很多 iframe 相关 api 被禁用了,导致这种方案 bug 很多)

4511 次点击
所在节点    浏览器
38 条回复
murmur
2021-12-23 09:36:08 +08:00
没做,iframe 是各种不靠谱,尤其是现在要求 https ,老系统什么都没法动,进了 iframe 资源都加载不了
duduaba
2021-12-23 09:44:18 +08:00
这不就是前端"微服务"要做的事,你看看 qiankun 或者 single-spa 可以做到,各个子业务不要菜单,然后基座里引入菜单。
chihiro2014
2021-12-23 09:44:47 +08:00
前几天刚解禁 iframe 的问题。。。相当难搞
ryncv
2021-12-23 09:44:54 +08:00
这是需要微前端架构了,阿里的 qiankun 可以试一下。
linzhipeng
2021-12-23 09:48:36 +08:00
micro-app github
chihiro2014
2021-12-23 09:49:36 +08:00
我们的登录验证模块是以 jar 包的形式导入的。各个系统用的都是同一套,都是基于 session 和 cookie 。这就导致 iframe 出现跨域问题,要么选择浏览器版本降低到 chrome 50 以下,要么选择换方案。最后是改写了登录模块,加入了 token ,然后把 token 放在 queryString 里面,再让前端塞到 requestHeader 。。。解决登录验证问题
murmur
2021-12-23 09:49:41 +08:00
不是,上面说微前端的是啥意思,这是老旧系统的聚合,和微前端有啥关系,还能为了一个 sso 来个大翻新?
az22c
2021-12-23 10:05:35 +08:00
@coderfuns
@ryncv
@linzhipeng 新系统的确可以试试微前端。旧系统的确不合适这么改造
l4ever
2021-12-23 10:25:25 +08:00
A 系统点击 B 系统时, 带上参数
参数内包含了两个系统的身份识别, 比如用户 id,
B 系统解析 A 系统传递的参数. 获取用户身份.

严谨一点就是 A 系统生成 ticket, B 系统后端根据 ticket 从 A 系统查用户信息
az22c
2021-12-23 10:53:43 +08:00
> A 系统点击 B 系统时, 带上参数

@l4ever 那在页面上,怎么从显示 A 系统改为显示 B 系统的页面?
0312birdzhang
2021-12-23 11:58:29 +08:00
魔改 cas (单点登录)页面,ul-li 完事,又不是不能用(手动狗头
gxm44
2021-12-23 12:01:42 +08:00
qiankun 可以,就是坑太多,还真不如 iframe ,https 的问题反代下就好了
libook
2021-12-23 12:30:36 +08:00
我们切微前端架构了。

iframe 应该不会凉,只是安全方面加强了,相应的便捷程度就下降了,如果问题不多可以前期用 iframe 顶一下,后面块顶不住了换微前端。
dengji85
2021-12-23 14:09:58 +08:00
每个业务系统的前端框架也不同,有些老的是 iframe ,现在整合用 iframe 没问题,要是有些是拿不出单个页面显示还得改造业务系统,难,我也有这方面需求,mak
xiang0818
2021-12-23 14:10:46 +08:00
需要微应用。
5sheep
2021-12-23 15:21:58 +08:00
就是用一个主网站(即门户系统)去集成几个老系统。
最终让这些个系统看起来想一个系统一样,所有系统都用同一个后台。
用户只在主网站登录,权限、角色、菜单管理也都在主网站进行。其它子系统只作为纯业务系统。
今年我的主要工作就是在干这个。。。 真挺神奇的,咱们的需求都一样啊。

我们也是用的 iframe ,项目已经跑了几个月了,用户既可以使用集成的新平台,又可以像以前一样使用老系统,完美兼容。
听说两年后 chrome 会完全禁止跨域设置 cookie ,不管服务器怎么配置响应头不管用。不知道是不是真的。
murmur
2021-12-23 15:35:33 +08:00
@xiang0818 来仔细说说,我看了 qiankun ,那东西得配置导出函数把,我们做的东西有的是 jsp 、aspx 做的模板引擎,连个 js 都找不到,怎么配置他的导出函数

楼主的需求是把不限制技术栈的东西整合到一起,类似企业门户,而不是手握代码的一堆 webpack 近现代项目
ezreal
2021-12-23 15:45:02 +08:00
浏览器插件或者猴子脚本,或者打包好无依赖的脚本注入到每个项目?可以从前向后慢慢过渡,项目多一个个加还是麻烦的。
meshell
2021-12-23 16:30:54 +08:00
我这边的做法就是:有一个叫管理中心的后台里面负责接入各种业务的后台,管理中心里面提供菜单,权限,角色,用户,用应管理这些基础管理。然后管理中心后台提供 API ,比如说菜单 API 等等。然后出一个 SDK ,业务后台集成这个 SDK 。
az22c
2021-12-23 16:32:30 +08:00
> 我们做的东西有的是 jsp 、aspx 做的模板引擎

@murmur 我这边也有基于.net 的,也有基于 webpack 的 vue 这些的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823894

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX