2

私は Ember CLI + Ember Data + Simple Auth を使用しています。オーセンティケーターは正常に動作しています。しかし、Ember Data Rest Adapter を使用して Rest Call を実行しているときthis.store.findAll("user");に、カスタム オーソライザーの承認関数が呼び出されません。

crossOriginWhitelistRest API エンドポイントは別のドメインにあるため、environment.js にURL を追加しました。

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

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

手伝ってくれてありがとう :)

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.MyAppENVsimple-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 に答える