实现单点登录功能的思路以及kafka同步数据

  单点登录以及用户数据同步思路与方案

        当公司业务分布于多个子系统时,

  同一用户在A系统注册,即可在其他所有关联系统使用,

  并支持登录A系统后,自动在其他系统登录,退出同理。

  在A平台修改通用的用户数据(比如密码),及时通知其它平台进行更新数据。

  

  每个系统有自己单独的用户表,用于各自的业务逻辑,但用户ID与主用户表相同,其他数据根据需要可以放到主用户表,也可以放到各个系统中进行同步。

  主用户表单独存储和处理,我们公司是由中台进行单独管理,即单点登录

  当我们在A系统进行单点登录时,会获取一个新的token(由中台生成),我们将它保存在A系统的用户表,

  当我们访问A系统的业务数据时,先判断用户是否登录,就是通过token字段,有token并且A系统的用户表存在该token即代表登录

  那么A系统登录后,其他系统也登录了,怎么实现?

  每次当中台生成新token时,即代表有用户使用密码登录了,此时通过Kafka发布消息,各子系统监听到消息后,自动更新最新的token到各自的用户表。

  此时,当浏览器中缓存有token,访问其他子系统时,带上该token,即视为已登录用户。

  退出同理,当然还有基础用户数据修改、以及token过期等处理。

  kafka的好处,在于将用户剥离出来,使各个系统中的用户表互不干扰。只需处理好kafka的消息队列即可,从外部看,就好像各个子系统的用户表毫无关系,但内里确实有机结合的。

posted @ 2018-05-17 15:37  _Eternity味道  Views(948)  Comments(0Edit  收藏  举报