我在 jwt.io 网站上做 JWT 登录算法,工作的本质描述得很清楚,在视频教程中我们谈论了一些 2 个令牌和完全不同类型的工作。据我了解,第二种更安全。现在我们明白了。结果,出现了许多问题。
我们有 3 个服务器:客户端服务器、api 服务器、身份验证服务器
这一切都始于我们向 Auth 服务器发出请求,我们给它的只是一个特定的 API 密钥来识别应用程序和一个包含数据的数组,例如登录名和密码,服务器返回 2 个密钥给我们:access_token和 refresh_token。下一个问题编号 1
令牌是如何构建的?需要特定的算法
我意识到我们已经将每个请求的访问令牌发送到 API 服务器,并将刷新令牌保存在前端的 localStorage 中“e
据我了解,访问令牌是有生命周期的,例如15分钟,API服务器可以轻松解码,如果时间到了,我们返回访问令牌生命周期已过期的答案。然后我们向 Auth 服务器发送请求并发送一个刷新令牌,服务器返回给我们一对新的刷新和访问令牌,然后客户端服务器更新 localStorage 并再次向 API 发送请求?
告诉我我是否正确构建了本质?
还有一个问题,在哪里存储访问令牌?
我的客户在 React 上,其他一切都在 php 上
令牌可以使用不同的算法,但默认情况下最常使用 HS256。此外,当使用 refresh_token 获取 access_token 时,出于安全目的,只应返回 access_token。否则,对token工作的理解是正确的,我还要注意的是,在token中,当它们在后端生成时,可以在其中编码信息(有时它可以派上用场)。
最好将访问令牌存储在全局存储中,这样您就不必不断地通过 props 传递它。一个好的解决方案是 Redux (一个很好的短期课程)或 Mobx,但只是为了连接它们,这就像从大炮中射击麻雀。所以 GlobalContext/GlobalStorage 可能会做(在这里简要介绍)