V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Alife8  ›  全部回复第 1 页 / 共 1 页
回复总数  3
2019-06-04 11:12:11 +08:00
回复了 imherer 创建的主题 程序员 JWT 如何实现一个账号只能同时在一个设备(端)登录
刚说的多加一个 R 其实也没必要,直接用最后登录时间代替就好!
PS:v2 上居然不能编辑!!
2019-06-04 11:04:01 +08:00
回复了 imherer 创建的主题 程序员 JWT 如何实现一个账号只能同时在一个设备(端)登录
我在寻找一种允许最多 x 个设备登录的最优方案.至于 1 个设备(帐号),似乎要好解决一些。想法和上面几位同学有相似!
1.在用户表多加一个字段 R
2.给 JWT 设定刷新时间
3.给 JWT 数据上加入 R 字段
当用户新登录时,给 R 一个随机值,并加入到 JWT 中返回给用户。
JWT 要刷新时,判断 JWT.R 值和用户表.R 值是否相等,不同则要求用户重登录,相同则返回新的 JWT。
当然这个 JWT 只有在刷新时才判断,若要解决这个问题可以加入一个黑名单缓存表,在用户新登录时根据最后登录时间判断上次生成的 JWT 刷新时间是否还未到。这样在用户请求数据时先查一下黑名单。这样还有一个好处,在用户修改了密码后之前的 JWT 就无效了.

不足:不够优雅
优点:似乎也只能这样了
FusionCool 也可以了解一下!
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3083 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 12ms · UTC 13:25 · PVG 21:25 · LAX 05:25 · JFK 08:25
Developed with CodeLauncher
♥ Do have faith in what you're doing.