Ember.js Ember-Data + AMS的身份验证令牌=> JSON或HTTP标头?

Chr*_*ris 7 authentication ember.js ember-data rails-api active-model-serializers

背景:

我有一个Ember.js 1.1.0-beta.1应用程序,它与Rails-API服务器(Rails 4)交换JSON数据.使用Ember-Data 1.0.0-beta.2和Active Model Serializers 0.8.1(AMS)完成JSON数据交换.我正在使用Ember-Data和AMS的默认推荐配置,并且符合JSON-API规范.

在任何给定的RESTful调用中,客户端将当前的身份验证令牌传递给服务器.验证和退出身份验证令牌,并生成新的身份验证令牌并将其发送回客户端.因此,每个RESTful调用都接受请求中的身份验证令牌,并在响应中提供新的身份验证令牌,客户端可以缓存该令牌并用于下一个RESTful调用.

题:

我在哪里将身份验证令牌放在每个请求和响应中?

它应该是请求和响应中每个对象的JSON的一部分吗?如果是这样,令牌放在现有对象的JSON结构中哪里(与身份验证无关)?

或者它们是否应该放在每个请求和响应对象的HTTP标头中?

什么是"Ember Way",人们可能最终期望在新的Ember Guides Cookbook中找到它?

更多背景:

我已经熟悉以下链接:

  • @machty 2 Embercasts:http://www.embercasts.com/episodes/client-side-authentication-part-2
  • @wycats推文:https://twitter.com/wycats/status/376495062709854209
  • @cavneb 3篇博文:http://coderberry.me/blog/2013/07/08/authentication-with-emberjs-part-1
  • @simplabs博客文章:http://log.simplabs.com/post/53016599611/authentication-in-ember-js

......我正在寻找超越这些的答案,并且特定于Ember-Data + AMS.

除了需要通过Ember-Data在响应中将新令牌传递回客户端之外,假设我的客户端代码与GitHub上的@machty Embercast示例类似:https://github.com/embercasts/authentication -Part-2 /斑点/主/公共/ JS/app.js

非常感谢你!

buu*_*uda 2

我已经构建了类似的东西,尽管除非用户注销,否则我不会重置令牌。

我不会把它放在请求主体本身中 - 你只会污染你的模型。可能没有 Ember 方式,因为这更多的是一个运输问题。我使用自定义 HTTP 标头和/或 cookie 传递令牌。需要 cookie 来授权文件下载,这不能通过 ajax 完成,尽管 cookie 也适用于 ajax 调用。在你的情况下,我会使用 cookie 并让服务器每次将其设置为新值。但是,您在每个 JSON 请求上重置令牌的方案不适用于同时请求。这真的有必要吗?如果您使用 TLS,您可能不需要太担心。您还可以使令牌超时,这样如果 10 分钟内没有请求,就会生成新令牌。