为什么基于令牌的身份验证更适合单页应用程序?

Ank*_*vda 1 token node.js jwt angularjs single-page-application

好吧,这可能是一个非常菜鸟或幼稚的问题,但我尝试在互联网上搜索,并且只有在没有找到任何有效的东西后才诉诸堆栈溢出。我一直在阅读有关基于令牌的身份验证以及基于 Cookie 的身份验证。我认为基于令牌的身份验证对于单页 Web 应用程序更好,但无法清楚地理解原因。我将使用 Nodejs 和 AngularJS 来完成同样的任务。

ped*_*ofb 5

我猜想,使用基于令牌的身份验证以及基于 Cookie 的身份验证,您的意思是令牌身份验证与会话身份验证,因为令牌可以存储在 cookie 中

看到这个

  • 通过基于会话的身份验证,服务器为每个连接的用户维护一个会话。客户端使用其凭据进行身份验证并接收 session_id(可以存储在 cookie 中)并将其附加到每个后续传出请求。因此,这可以被视为“令牌”,因为它相当于一组凭证。这种方法需要大量的服务器资源
  • 基于Token的认证是无状态的,不需要服务器存储,因为颁发的Token(主要使用JWT)包含相关的用户信息,并使用服务器私钥签名,因此不可伪造。令牌存储在客户端(cookie、localStorage 等),附加到每个请求并由服务器验证。令牌也适用于不需要维护每个请求之间状态的 REST API

基于表单的应用程序使用基于会话的身份验证,而SPA由于其固有的优势经常使用基于令牌的身份验证。

另请注意,如果应用程序位于与服务器相同的域中,则具有基于会话身份验证的 SPA 仅会将 cookie 附加到传出请求