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