前端角度的理解,可分为两大块内容
1、统一登录的业务模块 (将登录业务模块独立出来)
痛点:主要是前端开发人员维护痛苦,每个项目都单独写登录界面,代码不统一,维护起来麻烦(后台服务统一,前端未统一)。未能提升开发效率。
方案:
a、统一登录业务SDK(npm包集成)
优点:方便快捷集成
缺点:技术栈需要相同
b、统一登录独立系统 (跳转登录系统)
优点:统一维护,不受项目技术栈限制,应用场景广
缺点:系统访问路径url需要中转登录服务
2、统一登录SSO服务(单点登录)
痛点:多平台登录会相互影响,切换平台需要重新登录,影响用户体验。
是目前需要解决的问题
解决方案:token的共享
1、同源cookies 共享 --- 解决目前问题最简单选择
// 设置token在根域名下
if(window.location.host.includes('.ff.com.cn')){
return Cookies.set(TokenKey, token, { expires: 30, path: '/', domain: '.ff.com.cn' })
}
问题1:测试环境和正式环境需要设置不同的tokenKey
问题2:ff.com.cn 这样子域名在相同环境下的token是否都通用,通用的话需要把相关系统的tokenKey设置成一样。如不通用,那tokenKey须不一样。
问题3:后续系统会不会有其他域名的情况?
缺点:只能在同域下处理,储存的tokenKey须管理好
优点:项目改造简单,成本低
2、跨域需要登录系统分发token --- 需要独立部署登录系统
流程图:
说明token分发有两种方式:
1、URL传值
2、postMessage跨源通信
缺点:前期项目改造麻烦点,成本高
优点:扩展性高,不受域名限制