V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qinconquer
V2EX  ›  问与答

app 软件的登录状态一般是怎么做的呢

  •  1
     
  •   qinconquer · 166 天前 · 876 次点击
    这是一个创建于 166 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我对于这个部分不是很熟悉,希望各位前辈指点迷津。

    我目前的做法是通过 jwt 生成 token ,这里的 token 设置了过期时间,并存储再服务器上的 redis 中。这里的目的是为了限制用户的多个设备。

    但因为设置了过期时间,会给用户造成掉登录的情况,请问有什么办法可以实现大部分的 app 都不会掉登录的情况吗。

    或者是有更好的方法去实现我提到的问题吗。
    5 条回复
    rebornlv
        1
    rebornlv  
       166 天前
    如果要禁止多设备登录就不用 jwt ,直接生成一个加密的 token 字符串保存到 redis 中。
    防止掉登录,可以设置一个过期时间+刷新时间,在有效刷新时间内可以刷新 token
    hhecoder
        2
    hhecoder  
       166 天前 via Android
    直接用 token ,每次请求进来都更新在 redis 中的有效期
    lyusantu
        3
    lyusantu  
       166 天前
    token 过期时间给-1 或者>1 年就完事了,反正你是靠 redis 来管理的
    budgerigar
        4
    budgerigar  
       166 天前
    再加一个 refreshToken ,app 登陆时刷新 token
    XCFOX
        5
    XCFOX  
       166 天前
    都存 redis 了,那用 jwt 设过期时间也没有太大意义了。
    我的建议是直接换成类 session token ,格式是 `{user-id}-{random-string}`,拿类 session token 作为键、用户信息作为值存进 redis 。

    https://v2ex.com/t/979326
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1192 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.