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

时间:2017-06-29 12:52:34

标签: angularjs node.js token jwt single-page-application

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

2 个答案:

答案 0 :(得分:1)

SPA往往有许多面孔:登录视图,已注销视图或受限视图。这都是关于访问控制的。您的用户都获得了相同的应用,但他们可能没有相同级别的访问权限。你会发现自己为前端和后端构建了访问控制逻辑。

因为令牌包含所有这些信息,所以它们非常便携:您的UI和后端可以使用它们来做出决策。您可以与合作伙伴服务共享它们,作为构建将用户委派给正确应用程序的单点登录服务的方法。

希望此链接能为您提供更多信息..

Token Based Authentication for Single Page Apps (SPAs)

答案 1 :(得分:1)

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

请参阅this

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

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

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