这是我的工作流程:
以上所有方法都可行,但这里是我被困的地方。我希望将用户重定向回Ember前端,并自动登录。这就是我坚持的位置。这是服务器代码:
<!-- language: lang-js -->
signUpUser.save().then(function(model) {
res.set('location', 'http://localhost:4200/login');
res.status(302).json({user:model})
});
我能够成功重定向,但我无法在我的余烬代码中捕获json数据,而且我不确定Ember中我可以调用登录操作的位置或方式在给定的场景中。
我有一种感觉,我的做法可能是错的?因为电子邮件验证是常见的事情。此外,我不必让用户多次输入他们的表单信息。
答案 0 :(得分:1)
以下是我这样做的方式:
signUpUser.save().then(function(model) {
res.set('location', 'http://localhost:4200/login?token=' + token + 'id=' + id);
res.status(302).json({user:model})
});
beforeModel: function(transition) {
console.log(transition.queryParams.token);
if (transition.queryParams.token) {
this.controllerFor('login').send('assignTokenToUser', transition.queryParams.token, transition.queryParams.id);
};
if (!Ember.isEmpty(this.controllerFor('login').get('token'))) {
return this.transitionTo('courses');
}
}
我不确定这是Ember Way,但这里的关键是能够获取转换对象的queryParams。
答案 1 :(得分:0)
您能否提供有关您正在使用的身份验证系统的更多信息?听起来您正在使用JWT来传达有关电子邮件验证的一些信息,但您如何验证API请求?您是否使用存储在cookie中的另一个JWT?如果是这样,您希望在他们使用验证JWT到达时创建此cookie。
免责声明:我在Stormpath工作,我们的服务中提供功能齐全的电子邮件验证工作流程。虽然我们没有Ember.js的集成,但我们对JWT和单页应用程序有一个很好的概述,它可能在高层次上有用:Token Based Authentication for Single Page Apps
如果您可以选择切换框架,我们确实有一个Angular集成:Stormpath AngularJS SDK