美文网首页
ucenter原理

ucenter原理

作者: EdisonDong | 来源:发表于2016-12-07 22:33 被阅读0次

    ucenter是康盛(现属腾讯)开发的用户中心系统,用来打通旗下各个产品,如discuz,ucshop等。前段公司的一个需求是,要求ecstore和discuz打通,可以共享会员,经过一段时间的研究和使用,现介绍ucenter的使用和原理。

    流程

    现在假设有两个web应用,一个是商城,一个是bbs,要求在任何一个app上对会员进行的任何操作都可以同步到另一个app上,比如:

    1. 会员在商城注册,没有在bbs上注册,但是在商城注册的账号可以在bbs上使用。
    2. 会员在商城登录,直接访问bbs时,不用输入账号密码,就已经是登录状态,可以进行下一步的操作。
    3. 以上2步操作反过来也可以成立,即在bbs上的操作也会同步到商城。

    原理

    如果用户的操作是从商城开始的,数据走向是这样的:

    1. 用户在商城注册。
    2. 商城把祖册用户的信息插入数据库,并把添加一个用户的信息加密后发送到ucenter系统。
    3. ucenter接收数据,分发给相应的API,API解密数据,然后把数据插入到ucenter的数据库中。
    4. ucenter查询除商城外绑定的其他应用,假如现在只有一个应用bbs,用socket的方式通知bbs的相应借口,增加一个用户。
    5. ucenter又返回给商城一段js代码,js代码的src是bbs的接口地址。
    6. 商城接收到js代码,偷偷图把代码放在页面上,用户不可见,但是浏览器已经访问了bbs相应的接口。
    7. bbs接收数据并解密分发到具体的函数,函数查询此用户并设置bbs的session和cookie。
    8. 用户在没有知觉的情况下,已经登录了bbs。
    9. 用户访问bbs,发现自己已经是登录状态。
    10. 用户发了一个帖子说:这家公司做的数据连同真方便。
    11. 用户逛了一会儿,退出了登录,于是1~9的过程重复了一遍,只是借口和相应执行的函数不同,回到商城的时候,变成了访客状态。

    开发者需要做什么?

    虽然ucenter提供了很好的SDK,但开发者的工作量还是比较大的,要知道在原理一栏只是一个注册和登录的过程,真正要实现会员共享,还包括有会员的增删和改,甚至是积分和头像的更换,每一步操作都需要写严密的接口。这些接口的操作多数时候在:

    1. 查询数据库。
    2. 设置session和cookie。
    3. 返回正确的值。

    最佳实践

    如果商城,bbs和ucenter系统装在同一台机器上,就可以采用mysql的方式同步数据。这样的好处是速度快,不好的地方是不利于扩展,如果将来把商城单独部署到一台服务器上,那么原来的配置就会出问题。
    所以我建议以下几点:

    1. 不要用mysql的方式连同,而应该用远程的方式连同,方便扩展。
    2. 允许延时,不要每一步都检查用户中心。在实际使用过程中,会存在ucenter挂掉的情况,这样,商城注册的用户是无法立即同步到bbs的。

    相关文章

      网友评论

          本文标题:ucenter原理

          本文链接:https://www.haomeiwen.com/subject/mylrmttx.html