token 认证和使用 cookie 的认证有什么区别?
我正在尝试实现 Ember Auth Rails Demo但我不明白使用 token 身份验证背后的原因,如 Ember Auth FAQ 中所述关于“为什么要进行 token 认证?”的问题
最佳答案
典型的 Web 应用程序大多是 无国籍 , 因为它的 请求/响应 性质。 HTTP 协议(protocol)是 的最好例子。无国籍协议(protocol)。但由于大多数网络应用程序需要 状态 ,为了持有状态在服务器和客户端之间,使用 cookie 以便服务器可以在每个响应中将 cookie 发送回客户端。这意味着客户端发出的下一个请求将包含此 cookie,因此将被服务器识别。这样服务器就可以维护一个 session 与 无国籍客户,几乎了解应用程序的所有信息 状态 ,但存储在服务器中。在这种情况下,客户端绝不会持有 状态 ,这不怎么样Ember.js作品。
在 Ember.js 中,情况有所不同。 Ember.js 使程序员的工作更轻松,因为它确实拥有 状态为您,在客户端,每时每刻都知道它的状态无需向服务器发出请求 状态数据。
然而,持有状态在客户端中有时也会引入并发问题,而这些问题在 中根本不存在。无国籍情况。然而,Ember.js 也为您处理了这些问题;特别是 ember-data 就是考虑到这一点而构建的。总之,Ember.js 是一个为 设计的框架。有状态 客户。
Ember.js 不像典型的那样工作 无国籍 Web 应用程序所在的 session , 状态并且相应的 cookie 几乎完全由服务器处理。 Ember.js 持有 状态完全在 Javascript 中(在客户端的内存中,而不是像其他一些框架那样在 DOM 中)并且不需要服务器来管理 session 。这导致 Ember.js 在许多情况下更加通用,例如当您的应用处于离线模式时。
显然,出于安全原因,它确实需要某种 token 或 唯一键 每次发出请求时都会发送到服务器,以便成为 已认证 .通过这种方式,服务器可以查找发送 token (最初由服务器发出)并在将响应发送回客户端之前验证它是否有效。
在我看来,使用身份验证 token 而不是 cookie 的主要原因是 Ember Auth FAQ 中所述。主要是因为 Ember.js 框架的性质,也因为它更适合 有状态 网络应用范例。因此,cookie 机制不是构建 Ember.js 应用程序的最佳方法。
我希望我的回答能让你的问题更有意义。
关于authentication - token 认证与 Cookies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000835/