需求描述
在A系统 中增加B系统的菜单,直接点开,不用登录 就能浏览到B系统菜单。
实现思路
如何实现不用登录就能浏览到B系统菜单呢?翻了翻网上的例子,一般都是双方通过一个加密串来互相认证 或者用oauth2.0来实现,因为oauth2.0复杂一些,就没采用。
加密串采用的是jwt方式,下面这个文章给予很大帮助,感谢~~
遇到问题及解决方案
- Iframe退出问题
描述:集成第三方系统时,是将第三方系统集成进iframe框架内。遇到的问题是:将传给第三方的token超时后,要进行页面跳转,重新跳回A系统 的登录页,此时A系统的登录页并限制在iframe框内了。
解决:第三方系统在跳回时可通过top.location.href="A系统登录页面地址"
- Iframe框架下打开tab选项卡跨域无法关闭
描述:Iframe框架下打开tab选项卡因跨域问题js报错,当时有去搜索引擎翻,但都没有找到合适的。
解决:跟着浏览器去调试关闭选项卡的代码,发现是因为拿不到一个类的方法导致的报错。故做了一个区分,去访问第三方系统的tab 在关闭时不再执行多余的代码,直接进行页面关闭。 - 过滤器的过滤条件
描述:众所周知,用户在登录时系统都会有过滤器进行拦截。这个跳第三方菜单的页面也是通过过滤器进行拦截的,但是通过什么值去拦截比较好呢,我不太想用/这种,因为系统本身有默认的过滤器,若用/,会导致重复执行好几遍。
解决:因为是A系统去集成B系统,故在A系统上挂的菜单掌握在自己手上,在B系统提供的菜单前都加个前缀,系统通过该前缀去过滤,实现精准过滤。另外在跳转B系统时将前缀去掉,即可正常跳转。