jwt 如何做在线踢人功能?

2023-10-11 11:47:09 +08:00
 SkyLine7

不依赖第三方中间件(比如 redis )

9283 次点击
所在节点    Java
73 条回复
XCFOX
2023-10-11 12:50:30 +08:00
@fordoo #18

jwt 的出现就是为了无状态、不访问 db 。既然业务需求不能无状态,不如直接把 jwt 的签名、验证这一套省略了。用最简单的最直观的 session 模式。
chendy
2023-10-11 13:09:02 +08:00
直接不用 jwt ,jwt 本身就适合在服务间传递,减少用户中心这类服务的压力
浏览器,客户端认证用普通的 token ( cookie 里的 sessionid 也算 token )
PVXLL
2023-10-11 13:09:36 +08:00
打电话给客户端使用者让他自己销毁
zsdroid
2023-10-11 13:10:15 +08:00
@ns09005264 负载均衡了解下
aladdinding
2023-10-11 13:43:25 +08:00
加一个黑名单的中间价
mdn
2023-10-11 13:59:12 +08:00
@fordoo 这样用户的其他端都会被踢掉,所有 token 失效,而不是单个
hongfs
2023-10-11 14:02:32 +08:00
十月份才过去几天,第几个 JWT 帖子了。。。
manasheep
2023-10-11 14:04:53 +08:00
token 时限设短,只有高危操作去验证用户账户状态,别的默认提供服务就可以了
hez2010
2023-10-11 14:06:40 +08:00
其实最好的方法是不用 jwt
lidashuang
2023-10-11 14:07:22 +08:00
黑名单, 数据库存储黑名单
fire2y
2023-10-11 14:08:32 +08:00
换个思路 把权限给禁掉就好了
cslive
2023-10-11 14:52:38 +08:00
数据库总用的吧,数据库中拉黑
leegoo
2023-10-11 15:00:03 +08:00
因为 jwt 就是一个 token ,token 反解析出来可以获取到用户信息

数据结构类似于 : key:token ,value:info

我提供的思路是

在获取到 token 后,再使用另外一个 map 存储,这个 map 的 key 是 用户账号(保证用户的唯一性即可),value 对应这个 token
这样就能够保证 ,知道哪些用户登录了,如果要踢人, 只需要根据 新定义的那个 map 找到 对应的 token (可能有多个), 从 map 或者 redis 清理掉即可
chenduke
2023-10-11 15:10:13 +08:00
1.缩小 token 的过期时间,10 分钟,5 分钟。3 分钟, 看具体的场景的需要。
2.token 中包含生成的时间, 刷新 token 的时候与数据库中的最新刷新时间做比较,如果小于则返回需要重新登录。
3. 上面二条并不能保证及时性, 有条件加个消息推送的机制,这样就很及时了。
version
2023-10-11 15:20:55 +08:00
@hongfs 生活压力大..最近太多人转行程序员了..只能找一些 10 年未维护的老旧项目接手(面试的人也不懂技术)...产品就会把遗留问题丢给新手..
fengpan567
2023-10-11 15:23:01 +08:00
把用户禁了
fregie
2023-10-11 15:49:40 +08:00
这个需求跟 jwt 存在的意义互斥
swulling
2023-10-11 15:53:04 +08:00
一个令人费解的设计就是明明服务请求都落中心数据库,别人建议用 redis 做个 session ,却说 jwt 适合分布式,没有单点。很奇怪。
sunmlight
2023-10-11 15:56:53 +08:00
判断 用户+签发时间, 早于“踢”的失效?
Tiny
2023-10-11 16:04:26 +08:00
把 signing key 删了,token 失效

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

https://tanronggui.xyz/t/980925

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

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

© 2021 V2EX