我正在处理我的应用程序的注册部分。在服务器端创建新用户后,我调用Accounts.sendEnrollmentEmail()
. 我收到带有如下链接的电子邮件:
http://localhost:3000/enroll-account/XqMb6mqZQ3cGfyOgQgtWvLPqzVJ-qJeBYJ_I46mNE9c
并在 Iron Router 中创建了一个路由来处理它并显示一个“选择密码”表单,如下所示:
路线:
...
this.route('enrollAccount', {
path: '/enroll-account/:token',
data: function() { return this.params.token; }
});
...
报名模板:
<template name="enrollAccount">
<div class="panel panel-default">
<div class="panel-body">
<p>Please enter a password and click 'Enroll Account'</p>
<div class="form-control">
<label for="password">Enter Password</label>
<input type="password" id="password" name="password" />
</div>
<div class="form-control">
<label for="reenterPassword">Re-enter Password</label>
<input type="password" id="reenterPassword" name="reenterPassword" />
</div>
<button class="btn btn-primary" id="btnEnroll">Enroll Account</button>
</div>
</div>
</template>
和 JS:
Template.enrollAccount.events({
'click #btnEnroll': function(event, tmpl) {
event.preventDefault();
console.log('Enrolling with token ', this);
Accounts.resetPassword(this, tmpl.$('#password').val(), function(err) {
if (err) {
// TODO Toss some error
console.log('Error: ', err);
} else {
console.log('Enrollment successful, going home...');
Router.go('home');
}
});
}
});
当我输入注册 URL 时,我得到了很好的表格,填写它,单击按钮并让 console.log 说它正在发送。我还验证了令牌与数据库中的内容匹配。但是,调用Accounts.resetPassword()
永远不会执行回调函数。浏览器控制台中既没有错误也没有 else 登录。在 MongoDB 中选择用户显示仍然没有设置密码,并且它仍然有一个 services->password->reset 具有相同的令牌。我确定我错过了一步,但我不知道是什么。