请教:如何维持 APP 的长期 token 动态更新的问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
WriteJob
V2EX    程序员

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

  •  
  •   WriteJob 2017-09-16 11:41:32 +08:00 15624 次点击
    这是一个创建于 2947 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    如此,只要用户在 token 的有效期内访问 app,则用户长期无需登录。
    WriteJob
        14
    WriteJob  
    OP
       2017-09-17 08:23:40 +08:00
    @zjp 学习了,文章里分析的很透彻
    g29times
        15
    g29times  
       2018-06-19 17:35:15 +08:00
    @zjp 不错
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5473 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:09 PVG 17:09 LAX 02:09 JFK 05:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86