首页 文章

Ember CLI Ember Data简单验证:授权未被调用

提问于
浏览
2

我正在使用Ember CLI Ember Data Simple Auth . 验证器工作正常 . 但是当我正在使用Ember数据休息适配器 this.store.findAll("user"); 进行Rest调用时,我的自定义授权器中的授权功能不会被调用 .

Rest API endpoints 位于其他域上,因此我将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;
};

authorizer

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

感谢帮助 :)

2 回答

  • 0

    我遇到了类似的问题 . 对我来说这是 crossOriginWhitelist 配置 .

    我这样设置:

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

    看看我是否可以使它工作(我可以),然后我可以缩小它以确定我应该使用什么URL来强制执行限制(端口号和主机名等) .

    Don't leave it like that though!

    您应该确定哪个URL适用于白名单,并使用它 .

  • 1

    我面临同样的问题 . 我有相同的设置,但没有调用授权功能 . 您可以尝试在 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;
        }    
     };
    

相关问题