V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
qinconquer
V2EX  ›  问与答

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

  •  1
     
  •   qinconquer · Jun 15, 2024 · 1561 views
    This topic created in 692 days ago, the information mentioned may be changed or developed.
    我对于这个部分不是很熟悉,希望各位前辈指点迷津。

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

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

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

    https://v2ex.com/t/979326
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3163 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 14:48 · PVG 22:48 · LAX 07:48 · JFK 10:48
    ♥ Do have faith in what you're doing.