你的位置:首页 > 软件开发 > 网页设计 > 【大前端之打通账号系统】passport应该如何落地?

【大前端之打通账号系统】passport应该如何落地?

发布时间:2016-07-20 21:00:09
前言之前接入百度账号系统的时候写了一篇博客做研究:【大前端】认识单点登录,出来后才发现,很多小公司其实并没有将账号系统打通,总结一下账号系统没通的原因是:① 最初设计就没想过身份认证应该做整合② 后续业务中逐渐发现登陆系统过多,但是迫于业务压力以及整合复杂度,于是再搁置这个就是技 ...

【大前端之打通账号系统】passport应该如何落地?

前言

之前接入百度账号系统的时候写了一篇博客做研究:【大前端】认识单点登录,出来后才发现,很多小公司其实并没有将账号系统打通,总结一下账号系统没通的原因是:

① 最初设计就没想过身份认证应该做整合

② 后续业务中逐渐发现登陆系统过多,但是迫于业务压力以及整合复杂度,于是再搁置

这个就是技术债了,这种基础服务的技术债不及时还,会导致不可忽视的工程问题:

① 账号系统相关需求越来越多(登录、注册、个人信息管理......),每次都需要重新做

② 用户数据没有一个收口的地方,如果数据量一起来要整合、分析就难了(比如一些系统使用账号登录、一些系统使用手机登录,如果想全部改造成以手机登录就很难做到)

③ 账号系统不通(所有应用需要共享一个身份认证系统),会导致频道不通问题,比如多数情况下钱包也是一个独立的频道,而一个子频道产生订单后,需要去钱包频道完成支付(http --> https)这个时候如果需要重新登录的话是十分操蛋的行为

要解决以上问题,就要打通账号系统,这个有两个必要条件:

① 所有应用系统都直接依赖与同一套身份认证系统

② 所有的子系统都得改造通过上述认证系统认证,也就是之前文章说的,要能够识别ticket

然后真实的情况是比较失望的,之前已经有很多子系统各自为政了,而且数据库都不一致,所以更多的时候我们的问题是:

如何实现打通账号系统

② 新业务如何接入账号系统

③ 老业务如何接入账号系统

④ H5应该如何做

⑤ Native应该如何做

⑥ 没时间(没意识)

文中内容皆是自我知识总结,并且我是前端,如果文中有误请您指出。

用户数据共享

实现账号系统打通的前提是用户数据共享,分散的用户管理是账户系统打通的拦路虎,用户数据不能共用,各个系统之间根本没任何联系,所以要严谨子业务独立创建用户,公司的所有系统必须依赖于同一张用户信息表,这是一张不包含任何业务的表,可能包含以下数据:

① 用户id

② 用户昵称

③ 用户手机

④ 用户密码

⑤ 头像&性别&出生年月&身份证&头像......

比较差的情况是各个子系统的登录注册完全独立,这样用户便形成了信息孤岛,将各子系统的用户公共信息迁移到一张表是第一步。

PS:这种各个子系统独立的情况,甚至可能出现用户表中存在重复手机号的情况

差异化处理

如果所有子系统接共用同一张用户表,那么第一个问题马上就出来了,差异化如何处理,比如:

① 子系统A用户具有角色权限功能,比如管理员、游客、超级管理员

② 子系统B用户用于医院角色,具有职称属性,正教授、副教授、讲师

③ 子系统C为一个医院机构,具有地址、三甲等属性

这个时候需要各个子系统自己维护一个用户角色表,比如这样:

 1 //用户总表 2 //公司用户不一定都是子系统的用户,但子系统用户一定存在与公司用户总表中 3 var users = [ 4   { 5     id: '1', 6     phone: '13579246810', 7     name: '昵称1', 8     infos: '其它公共信息' 9   },10   {11     id: '2',12     phone: '13579246811',13     name: '昵称2',14     infos: '其它公共信息'15   },16   {17     id: '3',18     phone: '13579246812',19     name: '昵称3',20     infos: '其它公共信息'21   }22 ];23 //子系统A中的用户表24 var a_users = [25   {26     id: '1',27     roleId: '1'//游客28   },29   {30     id: '3',31     roleId: '2'//超级管理员32   }33 ];34 //子系统B中的用户表35 var b_users = [36   {37     id: '1',38     title: '教授'//游客39   },40   {41     id: '2',42     roleId: '副教授'//超级管理员43   }44 ];45 //子系统C中的用户表46 var c_users = [47   {48     id: '2',49     address: 'xxxx',50     title: '三甲'//游客51   },52   {53     id: '3',54     address: 'xxxx',55     roleId: '二甲'//超级管理员56   }57 ];

原标题:【大前端之打通账号系统】passport应该如何落地?

关键词:前端

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。