Ember simple-auth-token赢得了白名单API服务器

时间:2015-04-30 01:14:58

标签: ember.js ember-simple-auth

我一直在拔我的头发试图找出我错过的东西;我使用simple-authsimple-auth-token库(通过ember-cli 0.2.3),似乎无法让我的应用设置相应的Athentication: HTTP标头。根据我的阅读,最常见的疏忽是人们没有在crossOriginWhitelist: ENV变量上设置simple-auth属性。但是,即使值为['*'],我也无法让Ember通过我的API请求发送标头。请注意,我已经取代之前的手动(虽然,半生不熟!)auth解决方案,所以我知道我的API服务器正常工作,并且进行身份验证,并给出正确的凭据。

当我运行login动作时,一切都完美无瑕。如果我之后遇到受保护的Ember路线,它也可以正常工作。问题出现在Ember-data尝试点击我的API时(http://localhost:3000);它返回401(因为它没有设置Authorization:标题)并转换为我网站的索引。

以下是相关的代码部分:

配置/ environments.js

...

ENV['simple-auth'] = {
    authenticationRoute: 'login',
    authorizer: 'simple-auth-authorizer:token',
    crossOriginWhitelist: ['*']
};
ENV['simple-auth-token'] = {
    identificationField: 'email',
    passwordField: 'password',
    tokenPropertyName: 'token',
    authorizationPrefix: 'Bearer ',
    authorizationHeaderName: 'Authorization'
};
...

路由/ login.js

import Ember from 'ember';

export default Ember.Route.extend({
  actions: {
    login: function(){
      var creds = this.controller.getProperties('identification', 'password');
      this.get('session').authenticate('simple-auth-authenticator:jwt', creds)
        .then(function() {
          // +
          }, function() {
          // -
      });
    }
  }
});

路由/ application.js中

import Ember from 'ember';
import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';

export default Ember.Route.extend(ApplicationRouteMixin);

提前致谢。

1 个答案:

答案 0 :(得分:0)

config/environment.js中,尝试添加:

var ENV = {
  ...
  contentSecurityPolicy: {
    'default-src': "'none'",
    'script-src': "'self'",
    'font-src': "'self'",
    'connect-src': "'self' *",
    'img-src': "'self'",
    'style-src': "'self'",
    'media-src': "'self'"
  }
  ...
};