统一登录方案

前端角度的理解,可分为两大块内容

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 --- 需要独立部署登录系统

流程图:

登录系统流程图.png

说明token分发有两种方式:
1、URL传值
2、postMessage跨源通信

缺点:前期项目改造麻烦点,成本高

优点:扩展性高,不受域名限制

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容