Rails、devise、および Cookie ベースのセッションを使用して、Ember.js アプリ認証で 3 つの目標を達成しようとしています。
#/sessions/new
ログインしていない場合はリダイレクトされます。- アプリケーション テンプレートに常に現在のユーザーの情報を表示します。
- ユーザーがログインしていて、
#/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);
}
})
},
}
});