【发布时间】:2022-11-17 12:15:02
【问题描述】:
我正在为我的应用程序使用 JWT 身份验证方案。我做了一些关于如何存储和使用访问和刷新令牌的研究,但我有几个问题我无法真正找到答案。对于应用程序,我在前端使用 React,在后端使用 .NET 6 Web API。
问题一:存储什么在哪里?
根据我所做的研究,出于安全原因,本地存储不是存储 jwt 令牌的好地方。因此,第二个最佳选择可能是 jwt 令牌的 HttpOnly cookie 和刷新令牌的本地存储。但是我确实读过一些文章,其中 jwt 令牌存储在本地存储中,而刷新令牌存储为 HttpOnly cookie。哪种方法更好,以及每种方法的优缺点。 P.S 我将轮换令牌,即一旦刷新旧的 jwt 令牌,将生成一个新的访问和刷新令牌。或者甚至存储在内存中比如 redux state
问题2:什么时候刷新 JWT Token?
jwt 令牌是否应该在其到期之前刷新,以便后端可以验证令牌,或者在令牌到期后刷新令牌是否可以(通过仅在刷新令牌时绕过验证,即刷新端点)。还应该通过设置计时器/间隔或等待请求失败来刷新吗?
问题三:访问用户数据和到期日期
我在 jwt 令牌中存储了一些用户数据,例如用户名和密码,这样我就可以在前端对它们进行访问。问题是当将 jwt 令牌设置为 HttpOnly cookie 时,由于 Javascript 无法访问令牌,我将无法访问用户数据和令牌的数据(例如 jti 和到期日期)。对于用户数据,我可以单独请求访问用户数据,例如用户名和电子邮件,但是对于 JWT 令牌的到期日期,我该如何获取呢?
如果有人遇到类似问题以及您如何解决这些问题,我将不胜感激这些问题的答案或任何反馈
【问题讨论】:
标签: reactjs jwt .net-6.0 refresh-token