V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NULL2020
V2EX  ›  Java

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

  •  
  •   NULL2020 · 2020-09-22 09:35:39 +08:00 · 3084 次点击
    这是一个创建于 1510 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司项目准备做 web 端,之前都是移动端,后端登录这块的方案只是简单的 JWT,token 存 redis,前端请求过来会判断是否跟缓存里的一致,移动端不支持多端登录。

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

    请教下业界一般用什么方案实现?后端技术栈是 Springboot,暂时没用到 Shiro & Security .
    12 条回复    2020-09-30 16:37:50 +08:00
    noe132
        1
    noe132  
       2020-09-22 09:47:15 +08:00
    都 jwt 了,还放在缓存里,这和 session 有什么区别?
    kop1989
        2
    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
        3
    liuhuan475  
       2020-09-22 09:55:35 +08:00
    jwt 不是能解密吗?存 redis 是干啥呢
    opengps
        4
    opengps  
       2020-09-22 09:56:37 +08:00
    每次登陆,单独一个 token,每次断开,只清理当前 token
    zachlhb
        5
    zachlhb  
       2020-09-22 10:08:16 +08:00 via Android
    各端建立不同的登录池,生成的 token 前加上端标识符,只在相同端里进行单点登录验证
    jay4497
        6
    jay4497  
       2020-09-22 10:11:47 +08:00
    最原始的 session 不就可以么
    NULL2020
        7
    NULL2020  
    OP
       2020-09-22 10:51:45 +08:00
    @noe132 #1
    @liuhuan475 #3 后端加了一层根据 ua + uid 判断 token 是否一致
    HashV2
        8
    HashV2  
       2020-09-22 11:32:33 +08:00
    token 签发之后就不管了, 多次登录多次签发
    HuberyPang
        9
    HuberyPang  
       2020-09-22 12:51:41 +08:00
    jwt 有配置私钥解密,不需要存 redis,直接解密校验就行,配置个过期时间,每次登录时都生成一个 token 回去就行,这样多少端都不会影响。
    zoharSoul
        10
    zoharSoul  
       2020-09-22 13:34:56 +08:00
    你先讲讲你怎么做到不支持的...?

    理论上本来就是支持多端同时的, 不允许才需要特殊处理啊
    NULL2020
        11
    NULL2020  
    OP
       2020-09-22 13:52:43 +08:00
    @HuberyPang #9
    @zoharSoul #10
    嗯嗯,大概是我想复杂了。。
    xixinimei
        12
    xixinimei  
       2020-09-30 16:37:50 +08:00
    我也想问 1 楼想问的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2606 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 03:44 · PVG 11:44 · LAX 19:44 · JFK 22:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.