Ruby on rails 使用Rails和Desive进行基于Ember.js会话cookie的身份验证
我希望通过使用rails、Desive和基于cookie的会话来实现我的Ember.js应用程序认证的3个目标Ruby on rails 使用Rails和Desive进行基于Ember.js会话cookie的身份验证,ruby-on-rails,ember.js,devise,Ruby On Rails,Ember.js,Devise,我希望通过使用rails、Desive和基于cookie的会话来实现我的Ember.js应用程序认证的3个目标 如果未登录,则重定向到#/sessions/new 始终在应用程序模板中显示当前用户的信息 如果用户已登录并直接转到#/some/route。当前用户应在加载时加载 我看了这些embercast视频:&。它们有点过时,但很有用 但仍不能完全解决。有人有完整的Rails 4、Desive、Emberjs 1.0.0示例吗 最大的问题是在页面加载时加载当前用户,并在提交登录表单时设置当前用
#/sessions/new
#/some/route
。当前用户应在加载时加载
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);
}
})
},
}
});
我不会说这是不可行的。但是,为了使身份验证正常工作,您将做大量额外和不必要的工作,这一切都可以通过简单的页面重定向来完成 我从德里克那里收集了一些意见,他是《木偶主干》的作者。虽然这些都是用于主干网而不是Ember.js,但客户端身份验证的情况是相同的 我发现让主干网/木偶网处理授权站点的身份验证和重新加载是痛苦的,也没有必要的。一旦他们登录,将他们重定向到服务器处理的不同URL,并让服务器作为经过身份验证的用户发送他们需要的所有内容 德里克的另一句话: 对。在很多情况下,我也会直截了当地说,“不要做单页应用程序”。登录屏幕就是最大的例子。在过去几年中我遇到的所有客户中,他们都问我,“嘿,我遇到了这个问题。我试图让我的登录屏幕从服务器返回当前用户信息,并在屏幕上重做所有这些内容,而不刷新所有内容。”我每次的回答都是,“不要这样做。”。" 再想想其他情况,比如Gmail。点击Gmail登录页面上的“登录”按钮后,你将无法顺利过渡。还会有相当大的数据加载重定向:) 从用户的角度来看,他们不会仅仅因为登录后有重定向就说Gmail不好。毕竟,注册/注册的频率远低于日常邮件操作 所以我的建议是,在用户会话更改后重新加载所有资源。让Rails和Desive以传统方式完成这些肮脏的工作