我正在使用Ember CLI + Ember Data + Simple Auth。验证器工作正常。但是当我正在使用Ember Data Rest Adapter this.store.findAll("user");
进行Rest Call时,我的自定义授权器中的授权功能不会被调用。
Rest API端点位于其他域上,因此我将url添加到我的environment.js中的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>
....
感谢您的帮助:)
答案 0 :(得分:1)
我有类似的问题。对我来说,这是crossOriginWhitelist
配置。
我这样设置:
// config/environment.js
ENV['simple-auth'] = {
crossOriginWhitelist: ['*'] // <-- Make sure it's an array, not a string
};
看看我是否可以让它工作(我可以),然后我可以缩小它以确定我应该使用什么URL来强制执行限制(端口号和主机名等)。
不要这样离开!
您实际上应该找出适用于白名单的URL,并使用它。
答案 1 :(得分:0)
我面临同样的问题。我有相同的设置,但没有调用授权功能。您可以尝试在crossOriginWhiteList url
添加端口号。
我在simple-auth之前运行的新初始化程序中添加window.ENV = window.MyAppENV
行。您已将其添加到索引文件中,这可能是simple-auth无法读取您的配置的原因。
其他配置routeAfterAuthentication: 'dashboard',
是否正常运行?如果没有那么这可能是原因。尝试添加新的初始化程序,如
export default {
name: 'simple-auth-config',
before: 'simple-auth',
initialize: function() {
window.ENV = window.MyAppNameENV;
}
};