2

我正在使用 Ember CLI + Ember 数据 + 简单身份验证。身份验证器工作正常。但是,当我使用 Ember Data Rest Adapter 进行 Rest Call 时this.store.findAll("user");,我的自定义授权器中的授权函数不会被调用。

Rest API Endpoint 在另一个域上,所以我将 url 添加到了crossOriginWhitelist我的 environment.js 中。

环境.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);
    }
};

索引.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>
....

感谢帮助 :)

4

2 回答 2

1

我有一个类似的问题。对我来说,这是crossOriginWhitelist配置。

我这样设置:

// config/environment.js

ENV['simple-auth'] = {
  crossOriginWhitelist: ['*']   // <-- Make sure it's an array, not a string
};

看看我是否可以让它工作(我可以),然后我可以缩小范围以确定我应该使用哪个 URL 来执行限制(端口号和主机名等)。

但是不要这样!

您实际上应该弄清楚哪些 URL 适用于白名单,并使用它。

于 2015-05-21T20:20:43.667 回答
0

我面临同样的问题。我有相同的设置,但没有调用授权函数。也许您可以尝试通过在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;
    }    
 };
于 2014-09-05T12:04:34.030 回答