Ember CLI + Ember Data + Simple Auth:授权不被调用
问题描述:
我正在使用Ember CLI + Ember Data + Simple Auth。验证者工作正常。但是当我使用Ember数据休息适配器this.store.findAll("user");
进行休息呼叫时,我的自定义授权程序中的授权功能不会被调用。Ember CLI + Ember Data + Simple Auth:授权不被调用
Rest API端点位于其他域,因此我在我的environment.js中将url添加到了crossOriginWhitelist
。
environment.js:
module.exports = function(environment) {
var ENV = {
// some configuration
};
ENV['simple-auth'] = {
crossOriginWhitelist: ['http://api.xxxx.com'],
authorizer: 'authorizer:xxxx',
routeAfterAuthentication: 'dashboard',
};
return ENV;
};
授权
import Ember from 'ember';
import Base from 'simple-auth/authorizers/base';
var XXXXAuthorizer = Base.extend({
authorize: function(jqXHR, requestOptions) {
// Some Code, gets not called, damn it :(
}
});
export default {
name: 'authorization',
before: 'simple-auth',
initialize: function(container) {
container.register('authorizer:xxxx', XXXXAuthorizer);
}
};
的index.html
....
<script>
window.XXXXWebclientENV = {{ENV}};
window.ENV = window.MyAppENV;
window.EmberENV = window.XXXXWebclientENV.EmberENV;
</script>
<script>
window.XXXXWebclient = require('xxxx-webclient/app')['default'].create(XXXXWebclientENV.APP);
</script>
....
感谢您的帮助:)
答
我面临同样的问题。我有相同的设置,但授权功能没有被调用。也许你可以尝试在你的crossOriginWhiteList url
中加入端口号。
我在新建初始化程序中添加了window.ENV = window.MyAppENV
行,该初始化程序在simple-auth之前运行。你已经在索引文件中添加了这个功能,这可能就是simple-auth无法读取你的配置的原因。
其他配置routeAfterAuthentication: 'dashboard',
是否正常工作?如果不是,那么这可能是原因。尝试添加新的初始化程序,如
export default {
name: 'simple-auth-config',
before: 'simple-auth',
initialize: function() {
window.ENV = window.MyAppNameENV;
}
};
答
我有类似的问题。对我来说,这是crossOriginWhitelist
配置。
我设置这样的:
// config/environment.js
ENV['simple-auth'] = {
crossOriginWhitelist: ['*'] // <-- Make sure it's an array, not a string
};
,看看我能得到它的工作(我可以),那么我可以缩小它弄清楚到底我应该用什么URL来强制限制(端口号和主机名等)。
不要这样,但!
你应该知道什么URL适用于白名单,并使用它。
我刚刚检查了相同的域,它工作正常。所以这肯定是一个跨域的域名问题。我认为simple-auth不能读取'crossOriginWhiteList'配置。 – 2014-09-05 12:28:47
它开始为我工作。我以前定义的端口号也是错的。所以在我删除那个端口号后,它对我来说工作得很好。 – 2014-09-05 12:54:44