我已经将一个ember-cli应用程序升级为一个自定义验证器和simple-auth的授权器,从0.0.40和ember-cli-simple-auth 0.6.3分别升级到版本0.0.46和0.6.7。
身份验证工作正常,但是authorize()方法不会触发,因此安全令牌不会添加到标头中,并且会返回http 401错误。
我在其他地方读过这可能是缺少crossOriginWhitelist问题,但我在index.html中有这个:
<script>
window.EmberENV = {{EMBER_ENV}};
<!-- Ember Simple Auth relies on window.ENV to read its configuration -->
window.ENV = window.EmberENV;
window.ENV['simple-auth'] = {
authorizer: 'authorizer:custom',
crossOriginWhitelist: window.EmberENV.APP.crossOriginWhitelist
};
</script>
对我来说似乎很好。
我可以通过在beforeModel()授权检查中将其添加到ajax调用来消除401错误:
beforeSend: function (request)
{
request.setRequestHeader('Authorization', 'Bearer ' + self.get('session.token'));
},
但当然这是不对的;它只是一个创可贴。
有人有什么想法吗?
谢谢,
BillyB
答案 0 :(得分:0)
我发现了问题。
除了升级ember-cli版本之外,我做的唯一更改是从ember-simple-auth切换到ember-cli-simple-auth,Ember Simple Auth基本库打包为Ember CLI Addon。
后者接受其在ember-cli的environment.js中的配置,而不是像我上面所做的那样在index.html中的内联脚本中接受它的配置。这很有效:
ENV['simple-auth'] = {
authenticationRoute: 'login',
routeAfterAuthentication: 'index',
routeIfAlreadyAuthenticated: 'index',
authorizer: 'authorizer:custom',
crossOriginWhitelist: ENV.APP.crossOriginWhitelist
简单认证的人注意:这个没有详细记录,或者至少我错过了。
-BillyB