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

2017-09-16 11:41:32 +08:00
 WriteJob

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

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

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

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

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

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

如此,只要用户在 token 的有效期内访问 app,则用户长期无需登录。
WriteJob
2017-09-17 08:23:40 +08:00
@zjp 学习了,文章里分析的很透彻
g29times
2018-06-19 17:35:15 +08:00
@zjp 不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/391174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX