2

ember-auth を使用して、ember アプリケーションでセッションを管理しています。Ember-auth は、すべてのルートとコントローラーに自動的に挿入される認証オブジェクトを提供します。

アプリケーションにユーザー登録ルートがあります。ユーザーがこのルートにいる間にログインした場合、ユーザーをこのルートから遠ざけたいと思います。そのために、次のコードを思いつきました。

App.RegisterRoute = Em.Route.extend({
    // redirect the user if he is already logged in
    redirect: function() {
        if (this.auth.get('signedIn')) {
            this.transitionTo('index');
        }
    },


    //check if user logged in and redirect him if he did
    loginStatusChanged: (function() {
        if (this.auth.get('signedIn')) {
            this.transitionTo('index');
        }
    }).observes('auth.signedIn'),

    setupController: function(controller) {
        controller.set('user', App.User.create());
    },
});

コードは機能しますが、ユーザーが登録ルートにいるときだけでなく、すべてのルートでオブザーバーが起動します。

現在の私の解決策は、現在のルートを取得し、それが「登録」に等しいかどうかを確認してから、移行を行うことです。これは理想的ではないようです。これを行う「残り火の方法」はありますか?

4

0 に答える 0