我一直在努力找出我错过了什么;我正在使用simple-auth
和simple-auth-token
库(通过ember-cli 0.2.3
),似乎无法让我的应用程序设置适当的Athentication:
HTTP标头。据我所知,最常见的疏忽是人们没有在simple-auth
ENV变量上设置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'"
}
...
};