V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
WriteJob
V2EX  ›  程序员

请教:如何维持 APP 的长期 token 动态更新的问题?

  •  
  •   WriteJob · Sep 16, 2017 · 16022 views
    This topic created in 3148 days ago, the information mentioned may be changed or developed.

    网上搜索找到一个方法:即在第一次用账号密码登录服务器会返回两个 token时效长短不一样。短的时效过了之后,发送时效长的 token 重新获取一个短时效,如果都过期,就需要重新登录了。

    1. 这两个时效分别设置在多久比较合适?

    2. 是否有更理想的解决方案?

    15 replies    2018-06-19 17:35:15 +08:00
    imherer
        1
    imherer  
       Sep 16, 2017
    参考微信的吧,就是这样设计的。 微信的长 token 是一个月,短的好像是 2 小时。
    mengskysama
        2
    mengskysama  
       Sep 16, 2017 via iPhone
    参考 oauth2 文档
    wlee1991
        3
    wlee1991  
       Sep 16, 2017
    加一个 flag
    pynix
        4
    pynix  
       Sep 16, 2017
    oauth
    pynix
        5
    pynix  
       Sep 16, 2017
    普通自家 app 不用考虑客户端过期,过期主要是针对把资源提供给别人用的场景。
    abcbuzhiming
        6
    abcbuzhiming  
       Sep 16, 2017
    楼主你这个方案完全不合理,为什么不能直接用哪个长期的 token 呢?怕被人窃取导致安全问题?
    guyskk
        7
    guyskk  
       Sep 16, 2017 via Android
    @abcbuzhiming
    oauth2 就是两个 token,我也想知道为啥这样设计~
    zjp
        8
    zjp  
       Sep 16, 2017   ❤️ 1
    两个 Token 只给自己增加了复杂度。一个过期的 Token 只能换取一个新的 Token 的方式可能更好
    http://www.jianshu.com/p/b4cf771e570e
    lianyue
        9
    lianyue  
       Sep 16, 2017
    30 天有效期 低于 20 天自动续期到 30 天就好了呀 超过 30 天不访问 就需要重新登录
    lslqtz
        10
    lslqtz  
       Sep 16, 2017
    过期后自动获取新 token,用另外一个 token 去获取干嘛。。
    workwonder
        11
    workwonder  
       Sep 16, 2017 via Android
    我也是实现成自动续期了。实际的有效期比较短,但是服务器每次见到 token 发来,都会自动续满。

    不知这样安全性如何?
    Cabana
        12
    Cabana  
       Sep 16, 2017 via Android
    @guyskk
    @zjp
    短的是 Access Token
    长的是 RefreshToken
    他们两个的作用是不一样的,建议去看下 Oauth
    kalman03
        13
    kalman03  
       Sep 16, 2017   ❤️ 2
    每次打开 APP,用客户端中已存在的 token,访问服务端刷新 token。逻辑为:

    若客户端 token 不存在,表示未登录。
    若客户端用旧的 token 刷新请求,服务端告知 token 失效( token 获取不到对应用户信息),则表示需要重新登录。
    若客户端用旧的 token 刷新请求,服务端正常响应,则用获取到的新 token 替换掉该老 token。

    如此,只要用户在 token 的有效期内访问 app,则用户长期无需登录。
    WriteJob
        14
    WriteJob  
    OP
       Sep 17, 2017
    @zjp 学习了,文章里分析的很透彻
    g29times
        15
    g29times  
       Jun 19, 2018
    @zjp 不错
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2638 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 11:27 · PVG 19:27 · LAX 04:27 · JFK 07:27
    ♥ Do have faith in what you're doing.