【问题标题】:ember-simple-auth doesn't add Token to every requestember-simple-auth 不会为每个请求添加 Token
【发布时间】:2014-12-09 17:45:56
【问题描述】:

我在前端使用 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 (see this demo),所有未来的 AJAX 请求都将使用此令牌作为 Authorization 标头执行 - 但事实并非如此。

我是否必须自己设置一个ajaxPrefilter,或者 Ember Simple Auth 是否应该为我这样做,并且我的代码/Ember Simple Auth 中存在一些错误?

更新 1

我只是在调试一些console.logauthorize 函数似乎没有被解雇。除了authorize之外,所有其他功能都可以成功记录。

更新 2

问题已解决:只是忘记设置crossOriginWhitelist

【问题讨论】:

    标签: ember.js devise ember-simple-auth


    【解决方案1】:

    从 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'
    });
    

    如果你还想手动调用 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
        })
      });
    });
    

    然后确保将授权信息添加到标头中。

    以上内容来自https://github.com/simplabs/ember-simple-auth 的主自述文件和http://ember-simple-auth.com/api/ 的api 文档

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多