authorize()方法不会为CustomAuthorizer触发

时间:2014-10-19 17:56:46

标签: javascript ember.js ember-cli ember-simple-auth

我已经将一个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

1 个答案:

答案 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