gpt4 book ai didi

javascript - 如果我使用基于 token 的身份验证,我还需要 session 吗

转载 作者:行者123 更新时间:2023-11-30 15:49:39 25 4
gpt4 key购买 nike

如果我以完全无状态的方式使用 JWT 等基于 token 的身份验证(即在 token 中包含用户 ID 之类的内容),那么根本不需要 session ,我说得对吗?

我刚读了这篇文章(Stop using JWT for sessions),不建议使用 JWT 替换 session 。

最佳答案

答案(一如既往):视情况而定!

前面的说法大概是软件开发的唯一准则,其他都是准则。是的,我在夸大其词,但我想传达的是,您需要对这些文章持保留态度。

对您的问题的更具体的回答是,是的,如果您在 JWT 中包含所需的一切,则不需要服务器端 session ,但如果您在 cookie 中包含所需的一切,也是如此。

在您的位置上,我会阅读更多关于该主题的文章,然后考虑手头的具体情况并决定最适合它的方法。我可以推荐以下博客文章作为有趣的补充阅读:Cookies vs Tokens: The Definitive Guide

TL;DR Tokens-based authentication is more relevant than ever. We examine the differences and similarities between cookie and token-based authentication, advantages of using tokens, and address common questions and concerns developers have regarding token-based auth.

从摘要中可以看出,它似乎支持基于 token 的身份验证,但这很好,因为它可以让您从另一个 Angular 看待这个问题。

就我个人而言,根据情况使用其中任何一种方法都没有问题。

如果我的系统由在单个域中可用的单个甚至多个 Web 应用程序组成,使用 session 标识符和存储在服务器上的相关 session 数据的更传统的实现是该死的好选择,让我们看看为什么:

  • 您可以在整个系统中进行单点登录,因为您的 session cookie 可用于同一域内的所有应用程序。
  • 在服务器上维护 session 状态会产生开销,但只要操作正确,您仍然可以使用该配置进行扩展。
  • session 标识符很可能比 JWT 更轻量,并且对客户端不透明,因此您不必担心泄露敏感信息。

但是,如果我有一个跨不同域和/或平台(网络、原生移动等)的多个应用程序系统,我会更倾向于基于 token 的方法......为什么你问,让我们看看:

  • 在这样的系统中,您很可能希望为不同的客户端应用程序提供一个通用的 Web API。使用基于 token 的方法设置要保护的 API 非常容易,因为那里有很多示例代码。
  • 作为多域和多平台,我无法使用 cookie 进行单点登录。
  • 既然您的应用程序拥有通用 API,那么如果您使用 JWT 而不是传统的基于 cookie 的 session 标识符,则向第三方应用程序开放该 API 会容易得多。

关于javascript - 如果我使用基于 token 的身份验证,我还需要 session 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com