大佬们好, JWT 如何防止多端登录 ?

281 天前
 junwind

如题,现在登录,我使用了 JWT 机制,但是怎么防止一个用户,在多个设备上登录呢?

8182 次点击
所在节点    程序员
55 条回复
angel001ma
281 天前
搜索单点登陆
OutOfMemoryError
281 天前
@angel001ma #1 单点登录指的是在单个站点登录后同步其他站点的登录状态,不是防多端登录用的吧
996635
281 天前
防止多端登录和 JWT 没关系, 后端维护 token 的生效状态即可
liuhan907
281 天前
jwt 就是为了给你多端登陆用的,你现在要防止。
yrzs
281 天前
将 jwt 存入 redis,判断 token 是否是 redis 里的
Akitora
281 天前
感觉 JWT 就主打一个无状态,在服务端和客户端都再额外维护一个状态绑定设备有点怪怪的
Helios0
281 天前
JWT 不支持,本身就是面向离线的设计,你说的这个场景是 session 。
NessajCN
281 天前
jwt 只是个验证工具,对于用户的登录端的限制需要你自己写 session control
因为很显然,你要防止用户多端登录,首先需要服务端知道用户已经登录
fengzhongdeyihan
281 天前
返回 jwt token 之前绑定 uid 和 token 到 redis 中.
然后校验的时候拿 jwt 的里面的 token 和 redis 里面的 token 对比.
tonywangcn
281 天前
签发 jwt 时,把 session id 放到 token 中
0o0O0o0O0o
281 天前
有状态与 JWT 在本站能不能算排名前十的技术争论主题?
fkdog
281 天前
jwt 关联设备 id ,设备 id 可以直接存在 jwt 里或者服务端存储,检测到请求对应的设备 id 与签发 jwt 的设备不一致则直接拒绝访问。
wunonglin
281 天前
你这是有状态的需求。明显是不符合 JWT 的使用逻辑强上。
thinkershare
281 天前
JWT 不支持你这个功能,你不应该使用 JWT 维护用户的 SESSION.
javalaw2010
281 天前
防止不了,jwt 本身是无状态的协议,你要防止多端登录,就必须记录 token ,此时 jwt 就退化为 session 了,所以我一直觉得目前的风气有点滥用 jwt ,所以我新项目中的都使用最简单的随机字符串作为 token 了,所谓返璞归真吧。。。
cat
281 天前
@0o0O0o0O0o 能,我发现很多人没懂 jwt 到底是啥意思 干嘛的,一味的想用来取代 session
lonenol
281 天前
你想想用传统的 cookie session 怎么防止多端登录呢?
chendy
281 天前
@cat 按照近几年面试经验,主要是培训机构都教
EasyProgramming
281 天前
1.使用手机号生成 jwt 字符串

2.用户登陆后,使用手机号作为 key ,jwt 字符串作为 value ,存入 redis ,将 jwt 字符串作为 token 下发给用户

3.用户访问时,后端解析用户传入的 jwt 字符串( token ),拿到手机号后,使用手机号去 redis 查询对应的 jwt 字符串,校验是否和一致

以上三步,可以实现你的需求
Biluesgakki
281 天前
确实很奇怪 不过要实现就把 token 放 redis 就行 上线的时候强行把原来有的踹了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023997

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX