之前写接口直接登录后 userid 存在客户端然后调用的。。方便是方便 感觉好不规范。。搜了下 token 什么的发现好多不同的。 1.登录后返回个 token token 和 token 过期时间存在用户表里 然后每次请求带 token 新增下 token 过期时间;过期了就返回登录界面
2.有 refresh_token 的这个和 1 好像类似 只是过期跳转到登录估计是按 refresh_token 过期来算,token 过期用 refresh_token 去刷新 然后重新存?
3.另外有的有什么 appid 和 secret 是什么鬼。。参考微信的吗 但是我给一个 app 单独写接口应该不需要这个吧
第二部刷新那个客户端写起来会不会很复杂啊 如果有异步请求什么的。然后我想知道用 userid 去获取数据和用 token 去获取数据的不同处。还有 token 存服务端的话如果不放在 user 表里 是不是存缓存也要加个 user 的什么信息让他变成唯一 key 好取啊。。比如 userid+字符串 token.其他不知道还有什么流程 想知道各位都采用什么流程啊 有图最好了 0 0
写的比较乱 这 2 天的暂时疑问。不知道现在有什么简单的稍微规范的流程 也不一定要完全安全,,至少稍微安全点吧。,。
1
Destiny97 2019-07-04 17:05:56 +08:00 via Android
第二个是 jwt ?第二个是 oauth?
|
2
Destiny97 2019-07-04 17:06:24 +08:00 via Android
第二个是 oauth->第三个是 oauth
|
3
JimmyTinsley 2019-07-04 17:07:36 +08:00
我们公司之前用的应该是你说的第二种. 按照有效期长短分两种 token, 短效 token 有效期 15 分钟, 长效 token 有效期 30 天(作用相当于 cookie). 客户端每 14 分钟通过接口, 用长效 token 更新短效 token, 其他需要 token 认证的接口统一使用短效的 token. token 的实现方式是 JWT. 机制大概是这样, 仅供参考~
|
4
baiyi 2019-07-04 17:28:15 +08:00
|
6
qwertyzzz OP @liujie333333 那客户端不是还要定时?
|
7
pyy910716 2019-07-04 18:03:46 +08:00 via iPhone
123
|
10
luozic 2019-07-04 18:21:27 +08:00
|
11
soulzz 2019-07-04 18:47:47 +08:00
参考同事的代码 :写一个生成 token 的方法(不对外公开),第一次调用时需要传参 secret 与 appid,对 secret 进行单向加密后存数据库,生成 uuid token 返回。做一个切点,api 请求校验 token,通过就继续执行,不通过就拦截。提供 refresh token 和 get token 方法,均需要提供 secret
|
12
soulzz 2019-07-04 18:50:48 +08:00
uuid 生成的 token 存 redis 设置过期时间
|
14
qwertyzzz OP @soulzz appid 和 secret 哪来的呀 能说下具体从登录开始到请求一个需要 token 的接口的流程吗。。
|
15
soulzz 2019-07-04 19:37:07 +08:00
@qwertyzzz appid 和 secret 是你自己定义的 例如每个版本的客户端你可以定义一个 appid 和对应的 secret
|
16
Destiny97 2019-07-04 20:50:01 +08:00 via Android
@qwertyzzz 我也不是很懂具体怎么用,只是在自己毕设里用过 jwt,然后了解过 oauth,这些都有应用场景,可以去以这几个为关键词搜索下具体怎么应用
|
17
CRUD 2019-07-04 21:03:21 +08:00
JWT 和 OAuth,主流语言基本都有现成的轮子实现这个事情,确定用这个的话先了解一下概念和规范,然后找自己语言的轮子撸上去就好了。
|
18
hantsy 2019-07-04 21:33:57 +08:00
浪费时间自已设计认证?
能够搞清 OAuth2 规范 4 种 Grant Flow 就不错了,现在大把开源的 OAuth 服务器,而且还有云服务,如 Anth0,Okta 等。 |