首页 文章

ember-simple-auth不会为每个请求添加令牌

提问于
浏览
5

我正在使用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中有一些错误?

Update 1

我刚刚玩了一些 console.log 调试 . 似乎 authorize 函数不会被触发 . 除 authorize 外,可以成功记录所有其他功能 .

Update 2

已解决的问题:忘了设置crossOriginWhitelist .

enter image description here

1 回答

  • 5

    从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文档

相关问题