Sle*_*vin 5 devise ember.js ember-simple-auth
我正在使用Ember 1.8.1,Ember Data 1.0.0-beta.12,Handlebars 1.3.0,jQuery 1.11.1,Ember Simple Auth 0.7.2和Ember Simple Auth Devise 0.7.2作为我的前端.我的后端支持Rails,Grape和Devise.
现在我正在尝试构建一个简单的身份验证.登录效果很好:Ember应用程序将登录凭据发送到我的Rails API并获取访问令牌.令牌被写入localStorage并重新加载页面工作正常.但据我了解Ember Simple Auth(参见本演示),所有未来的AJAX请求都将使用此标记作为Authorization标题执行- 但事实并非如此.
我是否必须自己设置ajaxPrefilter或者Ember Simple Auth为我做这个并且我的代码/ Ember Simple Auth中有一些错误?
更新1
我刚刚玩了一些console.log调试.似乎该authorize函数不会被触发.除了之外,所有其他功能都可以成功记录authorize.
更新2
问题解决:忘了设置crossOriginWhitelist.

从ESA开始,1.0令牌不会自动添加到每个请求中.
如果您使用的是OAuth2授权程序,那么要将授权信息添加到Ember数据请求,请执行以下操作:
// app/adapters/application.js
import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
authorizer: 'authorizer:some'
});
Run Code Online (Sandbox Code Playgroud)
如果您还希望进行手动JQuery调用,那么就像这样
this.get('session').authorize('authorizer:oauth2', (headerName, headerValue) => {
Ember.$.ajax({
url: myUrl,
beforeSend: function(xhr) {
xhr.setRequestHeader(headerName, headerValue);
},
method: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({
// stuff
})
});
});
Run Code Online (Sandbox Code Playgroud)
然后确保将授权信息添加到标头中.
以上内容来自https://github.com/simplabs/ember-simple-auth的主要自述文件,以及http://ember-simple-auth.com/api/上的api文档.