我希望通过使用 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);
}
})
},
}
});