保证同一个账号同时只能在一个设备上登录
2019独角兽企业重金招聘Python工程师标准>>>
一、使用redis存token
redis key设计
access_token_{token}:{userInfoJsonStr}
用户登录成功后,把token作为key,用户信息做为value。作用:通过token可以查到userinfo
token_by_userId_{userId}:{token}
用户登录成功后,把用户id作为key,token作为值:作用:通过userid可以查到token
注意:两个key的过期时间一样
代码逻辑
用户登录验证时,通过token_by_userId_{userId},查看redis中是否存在此key,如果存在,则说明,用户已经登录。
根据查到的token,删掉access_token_{token},然后再去登录操作。(此过程把上一此登录的信息删掉,上一次登录的账号就会被下线。)
二、如果是使用db存token
CREATE TABLE `gwy_login_token` (`user_id` int(11) NOT NULL,`token` varchar(100) NOT NULL COMMENT 'token',`expire_time` datetime DEFAULT NULL COMMENT '过期时间',`update_time` datetime DEFAULT NULL COMMENT '更新时间',PRIMARY KEY (`user_id`),UNIQUE KEY `token` (`token`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户Token';
思路:
用户数据账号密码,如果登录成功,就在上面表中新增一条数据。
user_id token expire_time update_time
2 96ec9ec9c8fc40f5a98f3d184450896d 2018-06-26 23:33:02 2018-06-26 11:33:02
该用户第二次登录,如果登录成功,就修改数据为:
user_id token expire_time update_time
2 48d3cc4069b94403a82d3d7905499076 2018-06-26 23:33:27 2018-06-26 11:33:27
由于96ec9ec9c8fc40f5a98f3d184450896d token被覆盖,所以用户使用此token请求接口的时候,服务端就返回:用户未登录。
转载于:https://my.oschina.net/anxiaole/blog/1785228
保证同一个账号同时只能在一个设备上登录相关推荐
- 如何保证同一个账号同时只能在一个设备登录,账号自动登录
相信很多人在移动开发中都会遇到这样的需求,当手机端的一个账号已经登录的情况下,限制这个账号在另一个设备上同时登录:账号自动登录.其实要做到这个的方法有很多,在这里我说下目前使用最多的一种方法: 在开发 ...
- android设备登录微信是不是被盗了,微信在其他设备上登录怎么办 微信被盗怎样找回...
微信在我们工作和日常交流中越来越重要,微信的账号安全也变得越来越重要,关系到人们的工作和生活,微信被盗怎么办?微信被盗怎么找回?微信在其他设备上登录怎么办?俗话说,有备无患不如蹭着现在还可以了解的时候 ...
- 顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?
掌握一到两门java主流中间件,是敲开BAT等大厂必备的技能,送给大家一个Java中间件学习路线,助力大家实现职场的蜕变. Java进阶之梯,成长路线与学习资料,助力突破中间件领域 在金融行业中,如果 ...
- jwt实现一个帐号只能同时在一个设备(端)登录的思路
jwt的规范目前只检测jwt的发布者,过期时间,签名等信息.大部分现成的库都是按照标准写的.但是标准没有要求jwt带入登录时间等信息,因此用户连续登录多次,后台返回的token在有效期内都能访问后台a ...
- php 实现同一个账号同时只能一个人登录
有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息. 一,实现原理 1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中. ...
- 一个账号限制只能同时一个人登录
最简单的测试办法就是用两个不同的浏览器登录,例如:用火狐浏览器登陆后再打开谷歌浏览器登陆,再回去刷新火狐浏览器时账号应该已经掉线了. 实现起来也很简单,在登陆时校验账号密钥正确后先查询用户的sessi ...
- 微信有电脑客户端吗_如何在一个电脑上登录多个微信号
导读: 微信是我们生活中必不可少的聊天工具,但是人们在日常生活中经常会有工作微信和生活微信分开的情况,目前很多安卓机支持一键双开,但是电脑端却锁定只允许打开一个:本文将重点介绍Win 10实现微信多开 ...
- 陌陌解绑手机的方法,让陌陌号能在不同机器上登录,不需要短信验证
有时候一个app在一个设备上登录后,要在其他设备登录的话就会提示绑定机器了,要么需要通过手机验证码解绑,要么就没办法,有什么好的方法能让我们可以在不同的手机上使用同一个账号吗? 上次我就遇到这样的问题 ...
- 高清图片在不同移动端设备上的显示效果
今天看到一道前端面试题,是别人面试自己很喜欢的前端团队时出的题目:一张高清图片,怎么保证其在不同移动端设备上的显示效果? 看到这个问题,我就一脸懵逼,实际上我连移动端那些像素都搞不清楚,这道题给我的话 ...
最新文章
- 2.1 词汇表征-深度学习第五课《序列模型》-Stanford吴恩达教授
- BeautifulSoup 一行代码获取今日日期,与smtplib结合
- python中导入包中的__init__文件夹的一个重要作用(去年对文件名的导入)
- CCNP学习笔记2-路由部分--EIGRP
- 监控某个dll被修改_浅谈动力环境监控系统技术标准
- framework —— auth认证
- html双击单元格修改,JS实现鼠标双击选中表格单元格代码
- 11/27 记事本
- .NET面试题精简版
- 文本界面听歌神器--moc
- 广州科二化龙考场_广州考驾照[科目二]化龙考场.考试详解
- Could not start AVD
- 【工控安全产品】工控主机卫士
- 产品经理 - 路漫漫其修远兮
- 自媒体人或初学者以及专业电影制作者最喜欢的八款制作软件推荐(会声会影)(Vegas)
- Vue面试题你学会了吗
- 将系统从机械盘重刷到固态盘“
- 链路聚合,链路聚合是什么意思
- BFS + 状态压缩总结
- 2017年第一次专题研讨会论坛成果:自行车和城市可持续发展国际案例