Javascript 在meteor中为自定义路由设置重置密码令牌

Javascript 在meteor中为自定义路由设置重置密码令牌,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,我正在使用meteor中的帐户密码构建一个自定义身份验证系统。我的问题是,为什么当我删除meteor为重置密码链接提供的默认哈希时,我也会丢失我的重置密码令牌会话?到目前为止,我有这个代码,但我不能访问我的模板中的条件来更改我的密码。设置自定义重置密码路由时似乎出现问题 路由器.js 重置密码.html server/config.js 同样,我有: this.route('password.reset', { path: '/password/reset/:token',

我正在使用meteor中的帐户密码构建一个自定义身份验证系统。我的问题是,为什么当我删除meteor为重置密码链接提供的默认哈希时,我也会丢失我的重置密码令牌会话?到目前为止,我有这个代码,但我不能访问我的模板中的条件来更改我的密码。设置自定义重置密码路由时似乎出现问题

路由器.js 重置密码.html server/config.js 同样,我有:

  this.route('password.reset', {
     path: '/password/reset/:token',
     onBeforeAction: function() {
        Accounts._resetPasswordToken = this.params.token;
        this.next();
     },
     template: 'resetPassword'
  });
并将if(Accounts.\u resetPasswordToken)移动到onCreate

Template.resetPassword.onCreated(function() {
   if(Accounts._resetPasswordToken) {
    Session.set(RESET_PASSWORD, Accounts._resetPasswordToken);
   }
  ...
if (Accounts._resetPasswordToken) {  
  Session.set('resetPasswordToken', Accounts._resetPasswordToken);
}

Template.resetPassword.helpers({  
  resetPassword: function() {
    return Session.get('resetPasswordToken');
  }
});

Template.resetPassword.events({  
  "submit .forgot-password": function(event) {
    // Prevent default browser form submit
    event.preventDefault();

    // Get value from form element
    email = event.target.email.value;

    if (email) {
      Accounts.forgotPassword({email: email}, function (error) {
        if (error) {
          if (error.message === 'User not found [403]') {
            throwAlert('This email address does not exist.', 'danger');
          } else {
          throwAlert('We are sorry but something went wrong.', 'danger');
          }
        } else {
          throwAlert('We have sent you an email with basic instructions to reset your password.', 'success');
        }
      });
    } else {
      throwAlert('Your email address cannot be empty.', 'danger');
    }
  },
  "submit .reset-password": function (event) {
    // Prevent default browser form submit
    event.preventDefault();

    // Get value from form element
    password = event.target.password.value;

    // If the password is valid, we can reset it.
    if (password) {
      Accounts.resetPassword(Session.get('resetPasswordToken'), password, function (error) {
        if (error) {
          throwAlert('We are sorry but something went wrong.', 'danger');
        } else {
          throwAlert('Your password has been changed. Welcome back!', 'success');
          Session.set('resetPasswordToken', null);
          Router.go('postsList');
        }
      });
    } else {
      throwAlert('Your password cannot be empty. Create a good one!', 'danger');
    }
  }
});
Meteor.startup(function() {
  Accounts.emailTemplates.resetPassword.text = function(user, url) {
    var token = url.substring(url.lastIndexOf('/') + 1, url.length);
    var newUrl = Meteor.absoluteUrl('reset-password/' + token);
    var str = 'Hello, \n';
        str+= 'Click on the following link to reset your password \n';
        str+= newUrl;
    return str;
  };
});
  this.route('password.reset', {
     path: '/password/reset/:token',
     onBeforeAction: function() {
        Accounts._resetPasswordToken = this.params.token;
        this.next();
     },
     template: 'resetPassword'
  });
Template.resetPassword.onCreated(function() {
   if(Accounts._resetPasswordToken) {
    Session.set(RESET_PASSWORD, Accounts._resetPasswordToken);
   }
  ...