Aar*_*oir 11 ember.js ember-data rails-api
我正在构建一个ember.js应用程序,我挂了认证.json休息后端是rails.每个请求都使用会话cookie(warden)进行身份验证.
当用户首次导航到应用程序根轨道重定向到登录页面时.会话授权后,将加载ember.js应用程序.加载后,ember.js应用程序使用ember-data RESTadapter和会话进行授权,向后端发出请求.
问题是会话将在预定的时间后过期.很多时候,当发生这种情况时,仍然会加载ember.js应用程序.因此,对后端的所有请求都会返回401 {not autorized}响应.
为了解决这个问题,我认为每次从服务器返回401 {not autorized}响应时,ember.js应用程序都需要通过登录模式通知用户.
有谁知道如何监听401 {not autorized}响应并允许用户重新登录而不会丢失任何更改或状态.
我见过其他方法,如令牌授权,但我担心安全问题.
有人有解决这个问题的工作方法吗?
截至当前版本的Ember Data(1.0 beta),您可以覆盖以下ajaxError方法DS.RESTAdapter:
App.ApplicationAdapter = DS.RESTAdapter.extend({
ajaxError: function(jqXHR) {
var error = this._super(jqXHR);
if (jqXHR && jqXHR.status === 401) {
#handle the 401 error
}
return error;
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,您应该调用@_super,特别是如果要覆盖其中一个更复杂的适配器,例如DS.ActiveModelAdapter哪个句柄422 Unprocessable Entity.
AFAIK 当前的 ember-data 实现没有解决这个问题,并且 ember-data 自述文件指出“处理错误状态”位于路线图上。
目前,您可以实现自己的错误处理适配器。看一下DS.RestAdapter 的实现 。通过使用它作为启动器,在其中添加错误处理应该不会太困难(例如,只需将错误函数添加到传递给 jQuery.ajax 调用的数据哈希中)。
| 归档时间: |
|
| 查看次数: |
3437 次 |
| 最近记录: |