Ruby on rails 在Ember.js/Rails/designe应用程序中处理用户注册
我正在尝试在Rails 4上编写一个纯Ember.js应用程序,我对如何处理用户管理感到困惑。我最初的想法是使用纯服务器呈现模板(ERB)通过designe进行用户注册和登录,然后应用程序的其余部分将使用Ember框架 问题是Ember想要接管标记并控制整个视口。通过这种方式,我无法选择应用程序的哪些方面应该使用服务器呈现的Erb模板,哪些应该使用余烬逻辑 我看到了很多关于如何处理已经登录的用户的例子,这些用户看起来很有趣,有助于认证感知控制器,但我没有看到关于允许在Ember应用程序中实现完整用户注册体验的教程或建议 从技术角度看,我没有找到正确的代码,或者从架构角度看,我不应该这样做,我是否遗漏了一些东西? 这与ember rails(0.12.0 w/1.0.0.rc3.3 ember源)、rails 4.0.0.rc1和Desive(rails4分支)一起使用 dev在这里 用户注册实际上不需要任何特殊处理。像对待其他模型一样对待用户注册,因为创建Ruby on rails 在Ember.js/Rails/designe应用程序中处理用户注册,ruby-on-rails,devise,ember.js,Ruby On Rails,Devise,Ember.js,我正在尝试在Rails 4上编写一个纯Ember.js应用程序,我对如何处理用户管理感到困惑。我最初的想法是使用纯服务器呈现模板(ERB)通过designe进行用户注册和登录,然后应用程序的其余部分将使用Ember框架 问题是Ember想要接管标记并控制整个视口。通过这种方式,我无法选择应用程序的哪些方面应该使用服务器呈现的Erb模板,哪些应该使用余烬逻辑 我看到了很多关于如何处理已经登录的用户的例子,这些用户看起来很有趣,有助于认证感知控制器,但我没有看到关于允许在Ember应用程序中实现完整
用户
模型不需要身份验证。(但编辑或删除它需要身份验证。)
您的实现可能如下所示:
App.User = DS.Model.extend
email: DS.attr 'string'
password: DS.attr 'string'
App.UsersNewRoute = Em.Route.extend
model: ->
App.User.createRecord()
App.UsersNewController = Em.ObjectController.extend
create: ->
@store.commit()
为简洁起见,跳过了错误检查、模板代码等。这里是根据@heartsentwined的答案给出的参考,因为粘贴到注释中效果不太好。有关更多信息,请参阅评论。因为我的api返回用户json,所以我只传递它期望的格式
didCreate: function() {
var user = App.Auth.get('_response').response.user;
var auth = {auth_token: user.auth_token, id: user.id};
App.Auth.get('_response').canonicalize(auth);
App.Auth.trigger('signInSuccess');
}
更新:
我切换到ember模型,现在在调用model.save()
(SignupController的submit
操作)的同一位置执行此操作
以上的解决方案对我几乎有效,但不是很有效。以下是我们所做的工作:
didCreate: function() {
var user = App.Auth.get('_response').response.user;
App.Auth.signIn({
data: {
'email': user.email,
'password': this.get('password'),
'remember': true
}
});
}
App.Auth.signIn在文档中被明确使用:Ah-我的理念被扭曲了,我没有意识到问题比它看起来更简单。我想我被Desive的服务器端解决方案的复杂性蒙蔽了双眼,它有无数的视图/专业控制器/等等。谢谢!因此,在创建帐户后,服务器使用user+auth令牌进行响应,我们如何自动登录到ember auth?@heartsentwined如果您能回答@flynfish的问题,我将不胜感激!我有同样的问题。是否有一种方法可以使用令牌填充
ember-auth
,而无需专门调用API端点ember-auth
?有效用例。等我有时间的时候,我会制作一个合适的公共API。目前:1。给ember-auth
一个JSON,与您从POST/sign-in
调用返回的JSON相同:App.auth.get(“'u-response')。规范化(JSON)代码>2。发送signinsucess
事件:App.Auth.trigger('signinsucess')
@heartsentwined@Brandon成功了,我在用户模型的didCreate
方法上设置它:didCreate:function(model){App.Auth.get('u response')。规范化(model);App.Auth.trigger('signinsucess');}
didCreate: function() {
var user = App.Auth.get('_response').response.user;
App.Auth.signIn({
data: {
'email': user.email,
'password': this.get('password'),
'remember': true
}
});
}