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

背景:

我有一个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/blob/master/public/js/app.js

非常感谢你!

解决方法

我有一个类似的堆栈 – ember,ember-data和rails-api与AMS.现在,我只是通过修改RESTAdapter的ajax方法将标识符(我存储在localStorage中)传递到标题中(尽管您可以将它传递给查询字符串).

我最初的想法是避免在每个请求上重置令牌.如果您特别担心令牌被嗅探,则可能更容易在服务器上定期重置令牌(例如,10分钟).然后,如果来自客户端的任何请求由于旧令牌而失败,则只需获取新令牌(通过传递服务器在登录时提供的“令牌”)并重播初始请求.

至于放置令牌的位置,实际上并没有“Ember Way” – 我更喜欢在标题中传递它,因为在查询字符串中传递它会使缓存变得混乱,并且更有可能在路上的某处记录.我肯定会避免在请求体中传递它 – 这会违背ember-data所期望的,我想.

相关文章

什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据...
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:...
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面