我希望我的Ember.js应用程序可以通过Rails、Devise和基于cookie的会话实现身份验证,满足以下3个目标。
但是我仍然找不到完整的Rails 4、Devise、Emberjs 1.0.0示例。最大的问题是如何在页面加载时加载当前用户,并在提交登录表单时设置当前用户。
目前,我的策略如下:
- 若用户未登录,则重定向到
#/sessions/new
。 - 在应用程序模板中始终显示当前用户的信息。
- 如果用户已登录并直接访问
#/some/route
,则应该在页面加载时加载当前用户。
但是我仍然找不到完整的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);
}
})
},
}
});