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

保证同一个账号同时只能在一个设备上登录相关推荐

  1. 如何保证同一个账号同时只能在一个设备登录,账号自动登录

    相信很多人在移动开发中都会遇到这样的需求,当手机端的一个账号已经登录的情况下,限制这个账号在另一个设备上同时登录:账号自动登录.其实要做到这个的方法有很多,在这里我说下目前使用最多的一种方法: 在开发 ...

  2. android设备登录微信是不是被盗了,微信在其他设备上登录怎么办 微信被盗怎样找回...

    微信在我们工作和日常交流中越来越重要,微信的账号安全也变得越来越重要,关系到人们的工作和生活,微信被盗怎么办?微信被盗怎么找回?微信在其他设备上登录怎么办?俗话说,有备无患不如蹭着现在还可以了解的时候 ...

  3. 顺序消费可没你想的这么简单,队列数量的变更往往无法保证同一个账号的消息发送到同一个分区,怎么解决?

    掌握一到两门java主流中间件,是敲开BAT等大厂必备的技能,送给大家一个Java中间件学习路线,助力大家实现职场的蜕变. Java进阶之梯,成长路线与学习资料,助力突破中间件领域 在金融行业中,如果 ...

  4. jwt实现一个帐号只能同时在一个设备(端)登录的思路

    jwt的规范目前只检测jwt的发布者,过期时间,签名等信息.大部分现成的库都是按照标准写的.但是标准没有要求jwt带入登录时间等信息,因此用户连续登录多次,后台返回的token在有效期内都能访问后台a ...

  5. php 实现同一个账号同时只能一个人登录

    有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息. 一,实现原理 1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中. ...

  6. 一个账号限制只能同时一个人登录

    最简单的测试办法就是用两个不同的浏览器登录,例如:用火狐浏览器登陆后再打开谷歌浏览器登陆,再回去刷新火狐浏览器时账号应该已经掉线了. 实现起来也很简单,在登陆时校验账号密钥正确后先查询用户的sessi ...

  7. 微信有电脑客户端吗_如何在一个电脑上登录多个微信号

    导读: 微信是我们生活中必不可少的聊天工具,但是人们在日常生活中经常会有工作微信和生活微信分开的情况,目前很多安卓机支持一键双开,但是电脑端却锁定只允许打开一个:本文将重点介绍Win 10实现微信多开 ...

  8. 陌陌解绑手机的方法,让陌陌号能在不同机器上登录,不需要短信验证

    有时候一个app在一个设备上登录后,要在其他设备登录的话就会提示绑定机器了,要么需要通过手机验证码解绑,要么就没办法,有什么好的方法能让我们可以在不同的手机上使用同一个账号吗? 上次我就遇到这样的问题 ...

  9. 高清图片在不同移动端设备上的显示效果

    今天看到一道前端面试题,是别人面试自己很喜欢的前端团队时出的题目:一张高清图片,怎么保证其在不同移动端设备上的显示效果? 看到这个问题,我就一脸懵逼,实际上我连移动端那些像素都搞不清楚,这道题给我的话 ...

最新文章

  1. 2.1 词汇表征-深度学习第五课《序列模型》-Stanford吴恩达教授
  2. BeautifulSoup 一行代码获取今日日期,与smtplib结合
  3. python中导入包中的__init__文件夹的一个重要作用(去年对文件名的导入)
  4. CCNP学习笔记2-路由部分--EIGRP
  5. 监控某个dll被修改_浅谈动力环境监控系统技术标准
  6. framework —— auth认证
  7. html双击单元格修改,JS实现鼠标双击选中表格单元格代码
  8. 11/27 记事本
  9. .NET面试题精简版
  10. 文本界面听歌神器--moc
  11. 广州科二化龙考场_广州考驾照[科目二]化龙考场.考试详解
  12. Could not start AVD
  13. 【工控安全产品】工控主机卫士
  14. 产品经理 - 路漫漫其修远兮
  15. 自媒体人或初学者以及专业电影制作者最喜欢的八款制作软件推荐(会声会影)(Vegas)
  16. Vue面试题你学会了吗
  17. 将系统从机械盘重刷到固态盘“
  18. 链路聚合,链路聚合是什么意思
  19. BFS + 状态压缩总结
  20. 2017年第一次专题研讨会论坛成果:自行车和城市可持续发展国际案例

热门文章

  1. 为什么程序return -1或exit(-1)而获取到的值是255
  2. Spring AOP源码分析(八)SpringAOP要注意的地方
  3. ios MKNetworkKit 的使用
  4. Belkatalog CMS SQL 注入漏洞(图)
  5. [Object-C语言随笔之二] 《NSLog》常用的打印调试语句与自动排版
  6. 如何在Windows7上安装Hyper-v manager
  7. REM——适合移动开发的自适应方案
  8. 深入解析Spring架构与设计原理-AOP
  9. tomcat配置相关总结
  10. C# QRCode 二维码