Ember 简单身份验证令牌不会将 API 服务器列入白名单



我一直在努力找出我错过了什么;我正在使用simple-authsimple-auth-token库(通过ember-cli 0.2.3),似乎无法让我的应用程序设置适当的Athentication:HTTP标头。据我所知,最常见的疏忽是人们没有在simple-authENV变量上设置crossOriginWhitelist:属性。然而,即使值为['*'],我似乎也无法让Ember用我的API请求发送头。请注意,我正在替换以前的手工(不过,半生不熟!)身份验证解决方案,所以我知道我的API服务器可以工作,并且身份验证,只要有正确的凭据。

当我运行login操作时,一切都完美无瑕。如果我在那之后击中了受保护的Ember路线,它也会很好。当Ember-data试图命中我的API(在http://localhost:3000)时,问题就出现了;它返回一个401(因为它没有设置Authorization:头)并转换到我的站点的索引。

以下是代码的相关部分:

config/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);

提前谢谢。

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'"
}
...
};

最新更新