我试图实施"重置密码"我的Meteor应用程序中的功能。基于本教程我有一个非常简单的实现:Julien's tutorial on gentlenode
有几个浮动的例子使用同样的基本方法。我几乎完全像朱利安那样做了我,但我只使用了一个模板;我在模板中使用了{{#if}},其中显示了重置密码'表单,如果我的会话变量sResetPassword不是假的。 (我不知道如何在Julien的例子中显示正确的模板,并且它在编写时对我不起作用 - 模板不会改变。)
这是关键代码。两种不同的方法都适用于我的本地应用程序,但两种方法都不适用于我的托管(模数)应用程序。
/* method one
if (Accounts._resetPasswordToken) {
Session.set('sResetPassword', Accounts._resetPasswordToken);
}
/* method two
Accounts.onResetPasswordLink( function(token) {
Session.set('sResetPassword', token);
});
在我部署的版本(模数)上,该链接打开了我的应用程序,直接进入开始屏幕。当我检查我的sResetPassword会话var的值时,它是未定义的,因此以某种方式,令牌的值永远不会被放入var。
虽然我们关注这个主题,但是当您使用单独的模板重置密码表单时,是否有人知道如何加载正确的模板?
答案 0 :(得分:0)
以下是它对我们有用的方式。代码:
var token, done;
Accounts.onResetPasswordLink(function (t, d)
{
token = t;
done = d;
setTimeout(()=>Router.go("reset_password"), 0);
});
Template["reset_password"].events({
"click #resetBtn": function (event:Event, instance:Blaze.TemplateInstance)
{
var password1: string = instance.$("#input_password1").val();
var password2: string = instance.$("#input_password2").val();
console.log(password1, password2);
if (password1 != password2)
{
return;
}
Accounts.resetPassword(token, password1, ()=>
{
done();
Router.go("somewhere");
});
}
});
模板:
<template name="reset_password">
<form data-parsley-validate>
<div class="input-field">
<input id="input_password1" type="password" class="validate" data-parsley-trigger="keyup" data-parsley-minlength="6" data-parsley-minlength-message = "Please provide a password that is at least a 6 characters long." required>
<label for="input_password1">New Password</label>
</div>
<div class="input-field">
<input id="input_password2" type="password" class="validate" data-parsley-trigger="keyup" data-parsley-minlength="6" data-parsley-minlength-message = "Please provide a password that is at least a 6 characters long." required>
<label for="input_password2">Again</label>
</div>
<button id="resetBtn" class="waves-effect btn">Reset Password</button>
</form>
答案 1 :(得分:0)
好的,无论出于何种原因,用流量路由器替换铁路由器为我解决了这个问题。我创建了一个只有登录和重置密码功能的新应用程序,它运行正常。我添加了铁路由器,它再次起作用,但只有开发模式。当我在生产模式下运行它时,问题又返回了。用流量路由器替换了铁路由器(在测试应用程序和我的完整应用程序中),现在问题已经消失。电子邮件链接在两种模式下都按预期工作。