多端登录如何实现踢人下线需求实现

 更新时间:2023年05月10日 17:27:37   作者:我是小趴菜  
这篇文章主要为大家介绍了多端登录如何实现踢人下线的需求实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

1:项目背景

 一个项目往往会有小程序,APP,PC等多端访问,比如淘宝,京东等。这时候就会有一些踢人下线的需求,比如你在一台电脑登录了PC端,这时候你再另外一台电脑也登录PC端,这时候之前在另外一台电脑上就会被强制下线。

或者你登录了PC端,这时候你登陆了APP或者小程序,这时候PC端的账号也会被强制下线

2:项目只有PC端

假设我们现在的项目只有PC端,没有小程序或者APP,那么这时候就是很简单了,用户的sessin(也就是所谓的Token)一般都是存储在redis中,session中包括用户ID等一些信息,当然还有一个最重要的就是登录的ip地址。

1:用户在登录的时候,从redis中获取用户session,如果没有就可以直接登录了

2:用户在另外一台电脑登录,从redis中获取到用户session,这时候用户session是有的,说明用户之前已经登录过了

3:这时候从用户session中获取IP,判断二者的ip是不是相同,如果不同,这时候就要发送一个通知给客户端,让另外一台设备登录的账号强制下线即可

3:项目有PC端和APP端和小程序端

当你的应用有PC端和APP端的时候,我们用户的session如果还是只存一个ip地址,那明显就是不够的,因为很多情况下,我们PC端和APP端是可以同时登录的,比如淘宝,京东等都是,也就是所谓的双端登录

这时候就会有多种情况

单端登录:PC端,APP端,小程序只能有一端登录

双端登录:允许其中二个端登录

三端登录:三个端都可以同时登录

对于三端可以同时登录就很简单,但是现在有个限制,就是app端只能登录一次,不能同时登录,也就是我一个手机登录了APP,另外一个手机登录的话,之前登录的APP端就要强制下线

所以我们的用户session存储的格式如下

{
   userId:用户的id
   clientType:PC端,小程序端,APP端
   imei:就是设备的唯一编号(对于PC端这个值就是ip地址,其余的就是手机设备的一个唯一编号)
}

单端登录

首先我们要知道,用户登录不同的设备那么用户session是不一样的。对于单端登录,那么我们可以拿到用户的所有的session,然后根据clientType和imei号来强制将其它端的用户session删除掉,然后通知客户端强制下线

双端登录

同样拿到所有用户的session,然后根据自己的业务需求来判定哪一端需要强制下线,比如我们现在已经登录了PC端和APP端,这时候登录小程序,现在要让APP端的强制下线。

这时候登录之后获取用户所有的session,这时候会有二个用户session,首先拿到clientType = APP的session,然后来通知客户端这个端需要强制下线。

如果这时候我登录了PC端和一个APP端,这时候我用另外一台手机登录APP端,那么之前那台手机上登录的APP端就要被强制下线,这个时候仅通过clientType是不行的,因为我二个手机登录的clientType都是APP端。所以这时候就要根据imei号来判断了。因为不同的手机imei号是不一样的。

这时候我拿到用户所有的session

  PC端的session
  sessionA{
      userId: 1,
      clientType: PC,
      imei: "123"
  }
  APP端的session
  sessionA{
      userId: 1,
      clientType: APP,
      imei: "12345"
  }

这时候我从另外一台手机登录的时候,生成的session应该是这样的

 APP端的session
  sessionA{
      userId: 1,
      clientType: APP,
      imei: "1234567"
  }

我发现同一个clientType的session已经有了,这时候我要判断imei号是否一样,imei一样说明是同一台设备,不同说明不是同一台设备,我们只需要把对应设备的账号强制下线即可了

总结

不管是单端登录,双端登录还是多端登录,我们都是根据用户session来判断。只要根据clientType和imei号来就可以满足我们大部分的踢人下线需求了。

以上就是多端登录如何实现踢人下线需求实现的详细内容,更多关于多端登录踢人下线的资料请关注程序员之家其它相关文章!

相关文章

  • Hybris在idea中debug配置方法详解

    Hybris在idea中debug配置方法详解

    这篇文章主要介绍了Hybris在idea中debug配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • GIT相关-IDEA/ECLIPSE工具配置的教程详解

    GIT相关-IDEA/ECLIPSE工具配置的教程详解

    这篇文章主要介绍了GIT相关-IDEA/ECLIPSE工具配置的教程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Postman测试报告的生成方法

    Postman测试报告的生成方法

    做完测试后,都会编写一份测试报告,测试报告中最主要的就是呈现出测试结果,哪些用例通过了,哪些用例没有通过。像postman这么强大的功能也可以自动生成报告,供我们测试同学进行查看,显得更加有B格
    2022-01-01
  • VSCode 如何隐藏侧边栏文件或文件夹

    VSCode 如何隐藏侧边栏文件或文件夹

    开发时有些文件根部就会动,可能是运行的环境或者缓存,可能是其他的文件,但是又不能删除,影响开发的观感,那么怎么在侧边栏栏隐藏文件呢,下面小编给大家分享VSCode 如何隐藏侧边栏文件或文件夹,感兴趣的朋友一起看看吧
    2024-03-03
  • VSCode中画UML图的方法实现

    VSCode中画UML图的方法实现

    这篇文章主要介绍了VSCode中画UML图的方法实现,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Web 开发常用工具 大家自己查找下载

    Web 开发常用工具 大家自己查找下载

    看到了Web通信分析工具 这篇文章,除了burpsuite其他我日常都经常使用。于似乎我整理了一下我自己用的其他的WEB开发工具。
    2009-06-06
  • Spark?GraphX?分布式图处理框架图算法详解

    Spark?GraphX?分布式图处理框架图算法详解

    这篇文章主要为大家介绍了Spark?GraphX?分布式图处理框架图算法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • VSCode开发必备插件推荐(墙裂推荐!)

    VSCode开发必备插件推荐(墙裂推荐!)

    vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器,下面这篇文章主要给大家介绍了关于VSCode必备插件推荐的相关资料,需要的朋友可以参考下
    2022-11-11
  • 详解idea中Git的Stash Changes和UnStash Changes用法

    详解idea中Git的Stash Changes和UnStash Changes用法

    这篇文章主要介绍了idea中Git的Stash Changes和UnStash Changes用法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • VSCode自定义配色方案的实现

    VSCode自定义配色方案的实现

    这篇文章主要介绍了VSCode自定义配色方案的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05

最新评论

?


http://www.vxiaotou.com