求解:api认证获取数据的设计思路,下面哪种比较好?或者有其它更好的设计?

destinyjingkun
  • 154

楼主之前都是写web后台,最近接手了个app的项目,从头搞到尾的那种,由于api接口多是采用无状态连接,楼主又没给app写过接口,想知道app获取数据的设计,哪种比较好?

用户表的话,因为客户的需求,设计的时候把mobile字段当作用户名,没有password,每次登录的时候都通过短信获取验证码直接登录。

1.使用access_token,但是这种我有几个疑问
(1)使用token,app的过期时间设置多长比较合适,总不能登录一下,token无限时长吧
(2)token过期时间设置了,当过期时间到了或者过期时间快到了的时候,客户端这边要怎么获取,总不能让它退出然后重新发送短信验证码,然后login获取access_token吧。
(3)关于上面(2)我想到的就是写个refresh_access_token ,客户端那么判断时间快过期的时候直接拿旧的token换新的token.然后数据库2个token都存,只是一个会过期,一个是拿来换新的token用的,换完之后重新生成

2.通信的时候直接采用加密的方式,数据库就不存token了,有点类似微信小程序获取ticket那样:

{
    user_id: ***,
    mobile: ***,
    rand_str: ***,
    timetamp: ***,
    signature: XXXXXXXXXX
}

每次客户端那边把数据按照一定的规则把数据重排然后加密赋值给一个字段(signature),然后传到客户端这边再把数据排完加密进行匹配(signature),客户端解析完拿完数据再返回json回去给客户端

楼主知识有限,这是第一次给app写接口,求解还有什么比较好的设计思路?大神们要是有什么比较好的,还望赐教~~~,项目急需,总不能卡在第一步吧。

回复
阅读 2.9k
2 个回答

可以参考一下:微信,QQ 的 token 一般有效期都是 30 天。
大多数时候 signature 是为了获取 token 用来验证的。

https://auth0.com/learn/refre... 看下这个对refresh token的解释吧 应该可以解决你的问题了

用来访问资源使用的access_token应该过期时间短一些,比如2个小时过期这种。

refresh_token一般时间比较长,一个月两个月都可以。

access_token过期了就用refresh_token去获取新的access_token

最后,如果refresh_token也过期了,就需要重新认证用户信息了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏