0

我已经将带有自定义身份验证器和授权器的 ember-cli 应用程序分别从 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'));
            },

但这当然是不对的;这只是一个创可贴。

有人有想法么?

谢谢,

比利B

4

1 回答 1

0

我发现了问题。

除了升级 ember-cli 版本之外,我所做的唯一更改是从ember-simple-auth切换到ember-cli-simple-auth,这是打包为 Ember CLI 插件的 Ember Simple Auth 基础库。

后者在 ember-cli 的 environment.js 中接受其配置,而不是在 index.html 中的内联脚本中,就像我在上面所做的那样。这有效:

    ENV['simple-auth'] = {
      authenticationRoute: 'login',
      routeAfterAuthentication: 'index',
      routeIfAlreadyAuthenticated: 'index',
      authorizer: 'authorizer:custom',
      crossOriginWhitelist: ENV.APP.crossOriginWhitelist

请注意 simple-auth 的人们:这没有很好的记录,或者至少我错过了它。

-比利B

于 2014-10-21T15:36:29.977 回答