请教关于 web 端支持多端登录的方案

2020-09-22 09:35:39 +08:00
 NULL2020
公司项目准备做 web 端,之前都是移动端,后端登录这块的方案只是简单的 JWT,token 存 redis,前端请求过来会判断是否跟缓存里的一致,移动端不支持多端登录。

现在产品要求 web 端要支持多端登录,并且某一端退出不会影响另一端,类似于微博,刚刚用 chrome 和 safari 测试了下同时登录,确实能做到多端在线,并且退出不影响另一个。

请教下业界一般用什么方案实现?后端技术栈是 Springboot,暂时没用到 Shiro & Security .
2890 次点击
所在节点    Java
12 条回复
noe132
2020-09-22 09:47:15 +08:00
都 jwt 了,还放在缓存里,这和 session 有什么区别?
kop1989
2020-09-22 09:54:12 +08:00
我理解的多端登录就是放开 token 与账号的 1 对 1 关系,用每次打开页面生成的一个随机 ID 或者之类的+账号,与 token 一对一。
既原来的逻辑是账号 A 对应 tokenA,tokenA 失效刷新得到 TokenB,此时账号 A 只能用 TokenB 请求。
而现在是账号 A+123 对应 tokenA,账号 A+234 对应 tokenP,他俩分别更新失效 token 互不影响。
liuhuan475
2020-09-22 09:55:35 +08:00
jwt 不是能解密吗?存 redis 是干啥呢
opengps
2020-09-22 09:56:37 +08:00
每次登陆,单独一个 token,每次断开,只清理当前 token
zachlhb
2020-09-22 10:08:16 +08:00
各端建立不同的登录池,生成的 token 前加上端标识符,只在相同端里进行单点登录验证
jay4497
2020-09-22 10:11:47 +08:00
最原始的 session 不就可以么
NULL2020
2020-09-22 10:51:45 +08:00
@noe132 #1
@liuhuan475 #3 后端加了一层根据 ua + uid 判断 token 是否一致
HashV2
2020-09-22 11:32:33 +08:00
token 签发之后就不管了, 多次登录多次签发
HuberyPang
2020-09-22 12:51:41 +08:00
jwt 有配置私钥解密,不需要存 redis,直接解密校验就行,配置个过期时间,每次登录时都生成一个 token 回去就行,这样多少端都不会影响。
zoharSoul
2020-09-22 13:34:56 +08:00
你先讲讲你怎么做到不支持的...?

理论上本来就是支持多端同时的, 不允许才需要特殊处理啊
NULL2020
2020-09-22 13:52:43 +08:00
@HuberyPang #9
@zoharSoul #10
嗯嗯,大概是我想复杂了。。
xixinimei
2020-09-30 16:37:50 +08:00
我也想问 1 楼想问的

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

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

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

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

© 2021 V2EX