0

ember-cli-simple-authプロジェクトでandを使用しember-cli-simple-auth-deviseていember-cliます。

Sessionまた、初期化子を介してsimple-auth をカスタマイズしています。

// app/initializers/custom-session.js
import Ember from 'ember';
import Session from 'simple-auth/session';

export default {
  name: 'custom-session',
  before: 'simple-auth',

  initialize: function(container, application) {
    Session.reopen({
      setCurrentUser: function() {
        var id = this.get('user_id'),
            self = this;

        if (!Ember.isEmpty(id)) {
          return container.lookup('store:main').find('user', id)
            .then(function(user) {
              self.set('currentUser', user);
            });
        }
      }.observes('user_id')
    });
  }
};

簡単な受け入れテスト (単に を呼び出すものok(1)) で、次のエラーが発生します。

Error: Assertion Failed: calling set on destroyed object  
Source:     
    at Adapter.extend.exception (localhost:4900/assets/vendor.js:57907:19)
    at apply (http://localhost:4900/assets/vendor.js:21143:27)
    at superWrapper [as exception] (localhost:4900/assets/vendor.js:20721:15)
    at RSVP.onerrorDefault (localhost:4900/assets/vendor.js:59827:26)
    at Object.__exports__.default.trigger (localhost:4900/assets/vendor.js:22673:13)
    at Promise._onerror (localhost:4900/assets/vendor.js:23397:16)
    at publishRejection (localhost:4900/assets/vendor.js:23804:17)
    at http://localhost:4900/assets/vendor.js:29217:9

行をコメントアウトするself.set('currentUser', user);と、エラーはなくなります。

これを処理する適切な方法は何ですか? テストでこの初期化子を無視する方法はありますか?

次のログ メッセージも表示されます。

Ember Simple Auth 用にオーソライザー ファクトリが構成されていません - バックエンド リクエストを承認する必要がある場合は指定してください。

4

1 に答える 1

1

まず、Ember Simple Auth を最新バージョン 0.6.4 に更新して、デフォルトのセッションを再度開かなくてもカスタム セッション クラスを指定できるようにする必要があります: https://github.com/simplabs/ember-simple-auth/releases /タグ/0.6.4

次に、オーソライザーに関する警告は、オーソライザーが定義されていないため、バックエンド サーバーに送信されるリクエストが承認されない (たとえば、Authorization ヘッダーがない) ことを意味します。設定次第ではOKかもしれません。

破棄されたオブジェクトの問題に関しては、オブジェクトが破棄されているかどうかを簡単に確認できます。

if (!self.isDestroyed) {
  self.set('currentUser', user);
}
于 2014-07-30T10:06:50.440 に答える