一个帐号多设备登录的处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个帐号多设备登录的处理相关的知识,希望对你有一定的参考价值。


    多设备登录的问题处理,远没有看起来那么简单。除了设计理念,安全方面的考量外,在技术上处理
也是个麻烦事。
    列几种情况:
    情况A:
      同用户在多个同类型设备上登录。 如,同一个帐号在多个android手机上登录.
    情况B:
     同用户在多个不同类型设备上登录。如,同一个帐号在手机,PC或Pad上登录.
    情况C:
     在一台手机上,用同一个帐号登录同一个产品旗下的两个不同APP.
        ......

所以情况远比想的麻烦.而且还会带来其它问题.   

    1.安全问题,支持多设备的话,有可能出现,别人能在另一个你已登录过的设备上,


      看到当前你和别人的消息记录。另外,要是某一台设备丢失了,只要不退出。就一直可以看到消息记录等。


    2.如果控制不好,服务端会对用户连接管理失去控制。


    3.性能也是个麻烦事


    4.多设备消息怎么同步


    ......


不过有些业务情况就是需要支持,没办法。


      我把怎么处理一个帐号多设备登录简化成三个主要解决的问题.


1. 能同时维持同一帐户的多设备长连接。

要有一个好的组合来区分各种情况.


我想到的大致参数如下:


       userID + appID + Platform + DeviceType | 所连serviceID     //ios_DeviceToken


    


   

一个帐号多设备登录的处理_客户端



2. 如何群发至同一帐户的多个登录设备

    只要订阅了同一个userID,则 PUB/SUB 模式即可



3. 多设备离线消息的拉取与同步

   仅以IM消息为例,可以用下图的方式:


 


     

一个帐号多设备登录的处理_多设备登录_02


         每个用户在服务端保存一个消息总数,一个最大已读数(不管是哪个设备读的)。 然后客户端本地缓存一个已读消息的最大消息ID.  

 通过两相对比,由客户端确定要拉取的消息范围。

         放客户端,让用户在得到用户的消息状况后,去决定拉取多少条消息,而不是放服务端的原因之一是,这样更灵活点。

万一登录的是个新设备呢?或者每页显示行数发生变化了之类。

      先记录到这,真要实现出来远不是个容易事。 牵扯很多东西,不然也不会到现在为止,还有些第三方服务商仍不支持这个功能。



以上是关于一个帐号多设备登录的处理的主要内容,如果未能解决你的问题,请参考以下文章

单用户,多设备登录问题

华为帐号多端协同,打造美好互联生活

华为帐号多端协同,打造美好互联生活

为啥我登入淘宝购物车要登入帐号,很麻烦,怎么取消啊?

Mac下,使用sshpass让iterm2支持多ssh登录信息保存

在windows环境下通过帐号密码SSH登录堡垒机,之后telnet到网络设备,通过命令交互对设备