多终端登录,只保留一个移动端+PC端同时在线

大家好,我是入错行的bug猫。(http://blog.csdn.net/qq_41399429,谢绝转载)


今天突然有小伙伴在群里问bug猫,多终端登录怎么搞。

bug猫说,不知道百度的程序猿不是好码农!

后来bug猫自己百度一下发现,还真没有!

于是就有这篇博文了~

今天就不罗嗦,毕竟快要下班放假了



多终端登录,只保留一个移动端+PC端同时在线。类似于微信、QQ,一个账号只能是一台电脑、或者一部手机同时在线,但是电脑和手机却可以同时在线。


既然有移动端,那么后台服务系统,存放用户信息的,肯定是用缓存。使用token、或者sessionId东西,在缓存中取用户信息。

为了统一,假设就叫token吧!

设计思路:

  • 用户在登录的时候,需要传入登录端类型:移动端;PC端;
  • 用户信息,在缓存中分为两个部分存储:
    • 根据token,获取到用户id,称为 缓存A ----> token:userId
    • 根据用户id,获取到用户信息,称为 缓存B ----> userId:userInfo
  • 用户信息对象userInfo,里面必须要有一个Map,map键为终端类型,值为终端类型对应的token。终端类型:token值



登录流程:

  1. 假设用户在登录,已经通过账号密码的验证,并且从数据中取到User对象

  2. 生成一个新token

  3. 根据用户id,在缓存B中,取用户信息:userInfo = getByUserId(userId)
       没有缓存:可喜可贺,用户第一次登录、或者用户又回来了。将User对象,转换成userInfo
       有缓存:有就有呗,可以肯定userInfo现在有值了…

  4. 判断userInfo对象中的Map,能否根据终端类型,获取到值:
       有值:说明用户这个终端,之前登录过,旧token还有效;
            a. 根据旧token,删除缓存A中的数据:delByToken(token)
            b. 将新token存入到Map中
            c. 在缓存A中存入数据
            d. 重新将userInfo存入缓存B
       无值:说明用户这个终端,没有登录、或者token失效:
            a. 将新token存入到Map中
            b. 在缓存A中存入数据
            c. 重新将userInfo存入缓存B

  5. 再将新token赋值给userInfo,返回给前端。注意Map不要序列化也返回了!



退出登录:

  1. 根据用户id,在缓存B中,取用户信息:userInfo = getByUserId(userId)
  2. 从Map中根据终端类型,获取token,并且将该终端对应的值删除
  3. 根据token,删除缓存A中的数据
  4. 判断Map的大小:
       为0,根据用户id,删除缓存B中的数据
       不为0,什么也不做





大概流程就是这样。

其他细节, (ಡωಡ)



里面还涉及到,移动端token失效时长、移动端有token免登陆等,各自根据具体业务实现就好~





本次博文写得真愉快,以后也像这样偷懒吧 (ಡωಡ)噗





  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PC端移动端自适应是指网站或应用程序能够根据用户的设备和屏幕大小自动调整展示效果和布局。在现代互联网时代,用户的访问终端多种多样,包括桌面电脑、笔记本电脑、平板电脑和智能手机等。为了让用户在不同设备上都能良好地浏览和使用网站或应用程序,开发者们需要考虑到不同设备的特点和差异。 PC端移动端自适应的实现方式主要有两种。一种是响应式网页设计(Responsive Web Design,简称RWD),它通过使用HTML5和CSS3等技术,在同一个网页的基础上根据屏幕大小和分辨率不同,调整页面元素和布局的显示效果。这种方式可以让网站在不同设备上表现一致,但同时也会增加开发的复杂度。 另一种方式是通过使用服务器端技术,根据用户访问设备的不同,返回不同的HTML和CSS文件。这种方式可以根据不同的设备提供不同的布局和功能,但也需要维护多个版本的网页,并增加了服务器端的压力。 PC端移动端自适应的好处是可以提供更好的用户体验和用户界面,让用户在不同设备上都能方便快捷地获取信息和进行操作。同时,也可以提高网站的可用性和搜索引擎优化效果,增加网站的流量和用户粘度。 总之,PC端移动端自适应是现代网页设计和应用开发的重要要求,它可以让用户在不同设备上都能获得良好的体验,并为开发者带来更多的机会和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值