我正在构建一个生产网站,并计划拥有大量具有不同角色的用户。我目前的做法是 redis/sessions 容器化自动缩放 Elastic beanstalk 部署。然而,随着用户的增加,使用 JWT 会更明智且最具成本效益吗?听起来不错,但是将它放在本地存储中的想法似乎存在很大的安全风险?我只是想正确地构建它,以免以后出现令人头疼的问题。
最佳答案
对于初学者,请考虑 JWT 不是 session 存储的替代品。迁移到 JWT 后,您需要将任何 session 状态数据存储在别处。 JWT 将通过声明为您提供身份验证和授权。 token 本身已签名,因此您可以而且应该验证签名以确保真实性。 JWT 适用于无状态应用程序、SPA 应用程序或跨应用程序身份验证。
其次,考虑您希望扩展到多大。使用 Redis 进行 session 存储很可能会让您在需要更多东西之前走得更远。预计该限制将远远超过 1k 请求/秒。到那时,您的架构中很可能会有更多的问题需要解决。将 session 分片到多个 Redis 实例也是一种增长的选择。
与此同时,优化 session 存储的使用。不要在 auth 之外过度使用它。你做的越多,迁移到 JWT 就越痛苦。
一些最后的想法:做你的研究。不要过早优化。但是你的头脑在正确的位置来思考它。
关于node.js - 具有 session 或 JWT 的 Node 用于大型用户群应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820945/