如果有多个系统要共享用户信息,该如何设计?
比如,阿里巴巴有支付宝、淘宝、天猫、阿里云等等一系列产品系统,但是只要你注册了其中任何一个产品,就可以在其它产品中也可以用该账号进行登录,而且你的收货地址、个人详细信息之类的也都会保留。
那么,这种系统是怎么设计的?
我想到两种方案:
方案1:
所有产品的后端共用一个数据库(这个太傻了,肯定不会这样设计)
方案2:
将用户验证、用户信息查询单独抽离成一个独立的项目(包括数据库和代码全部独立),供其它系统调用。
这样做的确可以让所有系统的用户信息实现共享,这样你在支付宝里面修改了收货地址,打开淘宝会发现淘宝里的收货地址也已经更新。
但是这样有个很大的弊端,就是跨表查询起来太麻烦了。比如我要搜索某个时间段的包括用户收货信息的订单详情,要不停地跨表联查。
问题
多个系统要共享用户信息,有没有好的解决方案呢?
OAuth2
了解一下。你说的这几个系统基本都提供oauth2接口