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

Posted

技术标签:

【中文标题】为啥基于令牌的身份验证更适合单页应用程序?【英文标题】:Why is token based authentication better for Single Page Applications?为什么基于令牌的身份验证更适合单页应用程序? 【发布时间】:2017-12-03 04:30:22 【问题描述】:

好的,所以这可能是一个非常菜鸟或幼稚的问题,但我尝试搜索互联网并在没有找到任何成果后才诉诸堆栈溢出。我一直在阅读有关基于令牌的身份验证以及基于 Cookie 的身份验证的信息。我发现基于令牌的身份验证更适合单页 Web 应用程序,但无法清楚地理解原因。我将使用 nodejs 和 angularjs 来完成同样的工作。

【问题讨论】:

看看它是否对你有帮助 - ***.com/questions/44825060/… 【参考方案1】:

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

见this

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

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

另请注意,只有当应用程序与服务器位于同一域中时,具有基于会话的身份验证的 SPA 才会将 cookie 附加到传出请求中

【讨论】:

【参考方案2】:

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

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

希望这个链接能给你更多的信息.​​.

Token Based Authentication for Single Page Apps (SPAs)

【讨论】:

通常在 SO 中,不要将链接作为答案,因为内容可能会发生变化,读者必须努力了解链接如何回答问题。如果您认为某个链接可能有帮助,请对其进行总结,将其与问题联系起来,当然,发布链接 好的。我会检查我的答案

以上是关于为啥基于令牌的身份验证更适合单页应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

基于 Token 的身份验证

基于 Token 的身份验证

使用 Play 2 框架的基于令牌的身份验证

(转)基于 Token 的身份验证

SPA 的 Cookie 与基于令牌的身份验证?

基于 Token 的身份验证