6

Rails、devise、および Cookie ベースのセッションを使用して、Ember.js アプリ認証で 3 つの目標を達成しようとしています。

  1. #/sessions/newログインしていない場合はリダイレクトされます。
  2. アプリケーション テンプレートに常に現在のユーザーの情報を表示します。
  3. ユーザーがログインしていて、#/some/route直接アクセスする場合。ロード時に現在のユーザーをロードする必要があります。

これらの embercast ビデオを見てきました: Client-side Authentication Part 1 & Client-side Authentication Part 2。それらは少し時代遅れですが、役に立ちます。

しかし、まだ完全な解決策にはなりません。Rails 4、Devise、Emberjs 1.0.0 の完全な例を持っている人はいますか?

最大の問題は、ページの読み込み時に現在のユーザーを読み込む戦略と、サインイン フォームが送信されたときに現在のユーザーを設定することです。

今、これは私の戦略です:


App.User = Em.Object.extend();

App.User.reopenClass({
  current: function() {
    return Ember.$.getJSON("/users/current").then(function(data) {
      return data
    })
  }
});

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return App.User.current();
  }
});

App.SessionsNewController = Ember.ObjectController.extend({

  actions: {
    save: function(data) {
      var self = this, data = this.getProperties('email', 'password');

      $.post("/sessions", { session: data }).always(function(response, status, data) {
        if (status == "success") {
          self.transitionToRoute('index');
        } else {
          self.set('errorMessage', data);
        }
      })

    },
  }

});

4

1 に答える 1