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

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

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

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

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

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

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

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

4299 次点击
所在节点    浏览器
38 条回复
az22c
2021-12-23 16:34:52 +08:00
> “浏览器插件或者猴子脚本,或者打包好无依赖的脚本注入到每个项目?可以从前向后慢慢过渡,项目多一个个加还是麻烦的。"

@ezreal 目前也是在尝试给每个系统注入相同的大菜单。但是点击菜单跳转的时候,应该是需要刷新页面的。用的 iframe 可以局部刷新
az22c
2021-12-23 16:37:29 +08:00
> 我这边的做法就是:有一个叫管理中心的后台里面负责接入各种业务的后台

@meshell 你这个是集成数据吧,我这边目前已经完成这个集成了。目前能够统一登陆,也能够经过跳转登陆各个业务系统。

我想做的是集成页面
ddch1997
2021-12-23 16:50:26 +08:00
巧了,我们这边的 zf 门户改造也是这么集成旧系统,前端解决方案到现在都没法给出来
meshell
2021-12-23 17:48:46 +08:00
@az22c 意思就是 A 的菜单 集成到 B 里面或者其它里面?
4771314
2021-12-23 17:51:51 +08:00
微前端走起
az22c
2021-12-23 17:55:57 +08:00
@meshell 继承为全局统一的菜单
cxe2v
2021-12-23 17:56:49 +08:00
微前端,你需要魔改你的老系统
iwasthere
2021-12-23 18:18:01 +08:00
qiankun 目前在多开和子系统带有 fixed 时不太好解决
meshell
2021-12-23 20:43:56 +08:00
@az22c 在管理中心做一个集成全是菜单的页面不行,管理中心反正啥应用的数据都有。
zqx
2021-12-24 06:24:54 +08:00
把菜单和路由管理做成组件,最好是技术栈无关的,每个老系统都引入这个组件并调成一样的布局。
首页做一个新的门户系统,包括登录逻辑。
nginx 给每个老系统分发入口路径,所有系统的域名都是门户系统的,根据路径不同代理到不同老系统。
最终效果是,用户进入门户,点击不同菜单项,网页加载不同 HTML ,整体布局不变,内容区域变成各系统,因为域名一致,也实现了免登录。
老系统内部的二级三级菜单,也可以集成到门户中。
chlinlearn
2021-12-24 08:55:02 +08:00
用 nginx 作跳转它不能实现这个?
NjcyNzMzNDQ3
2021-12-24 09:16:18 +08:00
同一个世界、同一个需求

我们是如果新项目框架 vue 、react 可以用 qiankun 。
老项目 mvc 的 jsp 、php 还用 iframe ,用 postMessage 做跨域数据通信。

门户菜单打算由子系统通过跨域数据通信共享( postMessage )回传给门户。
权限控制没想好,因为子系统业务场景都不一样,没办法用一套权限模板。
Joker123456789
2021-12-24 10:35:24 +08:00
请求多个 接口,把得到的菜单 汇总后,统一渲染
a90120411
2021-12-24 11:16:47 +08:00
原有项目有 JSP 、asp.net 、还有前端后端分离的。这情况用 iframe 可能是现阶段最优解决方案了。
az22c
2022-07-24 12:37:39 +08:00
@5sheep
@ddch1997
大佬们,这个项目还有在弄吗?现在浏览器厂商正式确定不给使用第三方 cookie 了。我这边内嵌的那些旧系统都是原本用 cookie 的,没办法改造。所以我这个系统玩不了两年就要崩了。
5sheep
2023-02-23 16:51:48 +08:00
@az22c 项目目前还在正常运行。
前端 iframe 集成,底层技术是 js 跨域通讯。 像一下弹框,打开 tab 页面,模态窗口,都可以做到完美兼容。某些极端情况通过重写旧系统的视图引擎解决。
cookie 通过后端代理加上对应响应头
用户权限 加一个主数据系统、加一个特殊的 sso ,可以做到 在新平台内打开旧系统页面时,使用的是新平台的组织架构和权限数据。直接访问旧系统时,使用旧系统的权限数据,这对需要重构组织架构是有用的。
az22c
2023-02-24 13:01:43 +08:00
@5sheep 我们公司是这样的,门户系统是 company.com 。老系统因历史原因是 company2.com ,iframe 嵌套在门户系统的里面。

老系统用的是.net 和 cookie 维护用户状态,iframe 里面不让发送第三方 cookie ,导致老系统在嵌在门户 iframe 内时不能登录
az22c
2023-02-24 13:19:31 +08:00
@5sheep 不知道你有没有做过门户系统前端部分的开发,调试起来贼麻烦。每个老系统都要制作一个假的 https 证书

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

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

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

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

© 2021 V2EX