ember.js - ember-simple-auth 不会为每个请求添加 Token

标签 ember.js devise 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 并获取访问 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 .

enter image description here

最佳答案

从 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/

相关文章:

javascript - Ember 观察 DOM 事件

javascript - Ember.js 嵌套的 ArrayController 和模型

ruby-on-rails - 无法让设计从 Angular.js 注销

ember.js - 使用简单例份验证从 HTTP 重定向到 HTTPS

testing - ember-simple-auth,验收测试和等待异步操作

ember.js - 我可以在何时何地从远程 API 在我的 Ember.js 应用程序中加载数据?

javascript - 在 EmberJS 中将摄氏度转换为华氏度

ruby-on-rails - Rails 5 设计 omniauth-facebook 错误 : Sorry, 出错了

ruby-on-rails-3 - 设计:在不登录的情况下将用户切换为管理员(su-方法)

ember.js - 使用 Oauth2 token 恢复没有电子邮件和密码的 session