【发布时间】:2021-08-23 14:47:18
【问题描述】:
这是我的身份验证流程:
- 用户登录后收到两个令牌(有过期时间的访问令牌和没有过期时间的刷新令牌)
- 对于每个用户,刷新令牌存储在数据库中名为 refreshTokens(它是一个数组)的 json 列中。
- 在客户端,访问令牌和刷新令牌都存储在本地存储中。
- 当需要验证用户时,如果访问令牌过期,则使用刷新令牌创建新的访问令牌并发回给用户并保持用户登录状态。
- 当用户注销时,存储在数据库中(在 refreshTokens 列表中)的刷新令牌被删除。
我的问题是:
- 这个流程安全吗?
- 我需要在 cookie 上保存刷新令牌还是本地存储足够好?
【问题讨论】:
-
为了使其更安全,我确保刷新令牌链接到“设备” - 在移动应用程序上,使用手机 ID 很容易,在浏览器上,这可能更具挑战性 - 例如UA 和 geo/ip 的组合。
标签: node.js express authentication jwt