多终端登录,只保留一个移动端+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
- 根据token,获取到用户id,称为
- 用户信息对象userInfo,里面必须要有一个Map,map键为终端类型,值为终端类型对应的token。终端类型:token值
登录流程:
假设用户在登录,已经通过账号密码的验证,并且从数据中取到User对象
生成一个新token
根据用户id,在
缓存B
中,取用户信息:userInfo = getByUserId(userId)
没有缓存:可喜可贺,用户第一次登录、或者用户又回来了。将User对象,转换成userInfo
有缓存:有就有呗,可以肯定userInfo现在有值了…判断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
中再将新token赋值给userInfo,返回给前端。注意Map不要序列化也返回了!
退出登录:
- 根据用户id,在
缓存B
中,取用户信息:userInfo = getByUserId(userId) - 从Map中根据终端类型,获取token,并且将该终端对应的值删除
- 根据token,删除
缓存A
中的数据 - 判断Map的大小:
为0,根据用户id,删除缓存B
中的数据
不为0,什么也不做
大概流程就是这样。
其他细节,略 (ಡωಡ)
里面还涉及到,移动端token失效时长、移动端有token免登陆等,各自根据具体业务实现就好~
本次博文写得真愉快,以后也像这样偷懒吧 (ಡωಡ)噗
多终端登录,只保留一个移动端+PC端同时在线相关推荐
- 请编写fun()函数,函数的功能是删去一维数组中相同的数据在一起出现的数,相同的数只保留一个
<程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p143 7.1.2 上级实训内容 [实训内容13]请编写fun()函数,函数的功能是删去一维数组中相同 ...
- 【美团校招笔试题】去除字符串首尾空格,中间多个空格只保留一个
要求: 这是本人参加美团校招在线考试笔试题,如果此行为违反了美团校招笔试题商业保密性,请与本人联系. 思路:用一个while循环扫描整个字符串,用pStart字符指针指向整个字符串首地址,如果遇到首部 ...
- 在线多空行只保留一个工具
在线多空行只保留一个工具 在线多空行只保留一个工具 多个空行只保留一个,工具会把2个及以上的空行替换成一个空行.多个空行只保留一个,工具会把2个及以上的空行替换成一个空行. https://toolt ...
- php删除数组中相同的元素,只保留一个相同元素
<?php // 删除数组中相同元素,只保留一个相同元素 function formatArray($array) { sort($array); $tem = "; $temarra ...
- 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 之间的随机整数(N \leq 100N≤100),对于其中重复的数字,只保留一个,把其余相
自己用了非常朴素的方法将本题解了出来. 三个for循环和两个sort,哈哈哈,xswl. 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 1 到 1000 ...
- php 只需qq 获取用户信息,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...
//里客云资源站,likeyunba.com //BY TANKING // header header("Content-Type:application/json"); err ...
- C++ 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的 ...
- 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的 ...
- Python程序——有一段英文文本,其中有单词连续重复了2次,编写程序检查重复的单词并只保留一个。
**题目:**假设有一段英文文本,其中有重复的单词,要求去除重复单词,只保留一个,例如"This is is a desk.",程序输出为"This is a desk. ...
最新文章
- 聊一聊:请假不想说真实原因,你都怎么跟领导讲?
- oracle删除无效归档日志,求助:rman无法按照策略删除过期的归档日志
- 如何在RCP程序中添加一个banner栏
- ICCV2017 论文解读:基于图像检索的行人重识别 | PaperDaily #13
- 如何将rdd导入数据库中【简单实例】
- python集群到hadoop_如何使用Hadoop流在本地Hadoop集群中运行MRJob?
- python经典算法--------冒泡排序
- Go 语言学习总结(7)—— 大厂 Go 编程规范总结
- sql 占比计算_数据库索引的优化及SQL处理过程(建议收藏)
- 时间序列分析工具箱——tibbletime
- 阿里云云计算ACP学习(一)---弹性计算
- A survey of network-based intrusion detection data sets翻译二(5-8)
- 学习大数据开发零基础是不是限制,小白能否快速学会?附上学习路线图
- CSS的三种布局方式
- foxmail不能添加google账户
- 一台机子上运行多个mysql实例
- K均值聚类以及matlab实现
- 图书管理系统设计与实现—看这篇就够了
- python 爬取17k网址的个人书架内容
- Codeforces 1080E - Sonya and Matrix Beauty - Manacher
热门文章
- pytorch实现 vision_transformer
- 百度的AI技术定力终见真章
- WIN2003 R2安装EPSON6200L打印机问题解决
- QTableWidget 设置表头颜色
- 计算机毕业设计springboot基于疫情背景下的新型点餐送餐系统bpe1s源码+系统+程序+lw文档+部署
- 国家计算机2级考试模板,全国计算机二级考试《C++》笔试样卷
- SQL 中文首字母提取与自定义排序
- 一文看懂SMT车间生产环境要求及管理规范
- 周爱民 - 架构师能力模型
- [射影几何]射影线束画二次曲线