我一直在拔我的头发试图找出我错过的东西;我使用simple-auth
和simple-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);
提前致谢。
答案 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'"
}
...
};