我正在处理我申请的注册部分。在服务器端创建新用户后,我调用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');
}
});
}
});
当我输入注册网址时,我得到表格就好了,填写完毕,点击按钮并获取console.log说它正在发送。我还验证了令牌与DB中的令牌匹配。但是,对Accounts.resetPassword()
的调用从不执行回调函数。浏览器控制台中既没有错误也没有else日志。在MongoDB中选择用户显示仍然没有设置密码,并且它仍然具有使用相同令牌的服务 - &gt;密码 - &gt;重置。我确信我错过了一步,但我不知道是什么。
答案 0 :(得分:2)
看来,Iron Router传入模板的对象实际上并不是String。当我打印出来时,它看起来像一个字符串,但如果我这样调用重置:
Accounts.resetPassword(this.toString(), tmpl.$('#password').val(), function(err)...
然后按预期工作。