我的前端使用 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 并获取访问 token 。 token 被写入 localStorage 并且重新加载页面工作正常。但据我了解 Ember Simple Auth ( see this demo ),所有 future 的 AJAX 请求都将使用此 token 执行 Authorization
标题 - 但事实并非如此。
我是否必须设置 ajaxPrefilter
由我自己还是 Ember Simple Auth 为我做这件事并且我的代码/Ember Simple Auth 中存在一些错误?
更新 1
我只是玩了一些 console.log
调试。看来authorize
函数不会被解雇。除了 authorize
之外,所有其他功能都可以成功记录。 .
更新 2
问题已解决:刚刚忘记设置 crossOriginWhitelist .
最佳答案
从 ESA 1.0 开始, token 不会自动添加到每个请求中。
如果您使用的是 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'
});
如果您还希望进行手动 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
})
});
});
然后确保将授权信息添加到 header 中。
以上来自 https://github.com/simplabs/ember-simple-auth 的主要自述文件,以及 http://ember-simple-auth.com/api/ 处的 api 文档
关于ember.js - ember-simple-auth 不会为每个请求添加 Token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27385392/