簡體   English   中英

如何在 Meteor 中重置帳戶密碼?

[英]How to reset an accounts password in Meteor?

我正在嘗試使用帳戶包重置密碼。

恢復.html:

<template name="recoverPassword">
  <div class="main-page">
    <div class="profile-container">
      <center>
        <div id="warning"></div>
        <div id="success"></div>
        {{#if resetPassword}}
        <form id="resetPasswordForm" method="post">
            <input id="resetPasswordPassword" name="password" placeholder="New Password" type="password" >
            <input id="resetPasswordPasswordConfirm" name="password-confirm" placeholder="Confirm" type="password" >
            <input class="btn-submit" type="submit" value="Reset">
        </form>
        {{else}}
        <form id="sendEmail">
          <div class="log-classic">
            <div class="show-no-error">
              <input class="log-upper-box" type="email" id="recover-email" placeholder='{{_ "global.emailHolder"}}' required>
            </div>
            <div class="bt-act-in">
              <input type="submit" class="btn bt-signin" value="{{_ "recover.sendMail"}}"/>
            </div>
          </div>
        </form>
        {{/if}}
      </center>
    </div>
  </div>
</template>

恢復.js:

if(Meteor.isClient){
  Template.recoverPassword.rendered = function(){
    if (Accounts._resetPasswordToken){
      Session.set('resetPassword', Accounts._resetPasswordToken);
    }
  }

  Template.recoverPassword.helpers({
    resetPassword: function(){
      return Session.get('resetPassword') || false;
    }
  });

  Template.recoverPassword.events({
    'submit #sendEmail': function(event, template){
      event.preventDefault();
      template.find('#warning').innerHTML = "";
      template.find('#success').innerHTML = "";
      var email = template.find('#recover-email').value.trim();
      Accounts.forgotPassword({email: email}, function(err) {
        if (err){
          if (err.message === 'User not found [403]') {
            template.find('#warning').innerHTML = "There is no account registered with this email!";
          }else{
            console.log(err.message);
            template.find('#warning').innerHTML = "We are sorry but something went wrong.";
          }
        }else{
          template.find('#success').innerHTML = "An email has been sent";
        }
      });
    },
    'submit #resetPassword': function(e, t) {
      e.preventDefault();
      var password = t.find('#resetPasswordPassword').value;
      var passwordConfirm = t.find('#resetPasswordPasswordConfirm').value;
          console.log("pwd : " + password);
      if (true){
        Accounts.resetPassword(Session.get('resetPassword'), password, function(err) {
          if (err) {
            console.log(err.message);
            template.find('warning').innerHTML = "We are sorry but something went wrong.";
          } else {
            console.log("wesh");
            template.find('success').innerHTML = "Your password as been updated!";
            Session.set('resetPassword', null);
          }
        });
      }
    }
  });
}

recoveryPassword 模板包含在我的 /splash 頁面中。 當我輸入無效的電子郵件時,我確實收到了表明該電子郵件不存在的消息。 否則,將發送帶有此消息的郵件:

Hello,

To reset your password, simply click the link below.

http://mywebsite.herokuapp.com/#/reset-password/a7jr8WgGNRSJYHQg5x4vQhUn_qZSZEDxeJEtBgdjugD

Thanks.

然后我點擊鏈接,進入啟動頁面。 然后 url 從我點擊的那個更改為 /splash (換句話說,令牌從瀏覽器的 url 欄中消失)。

模板正確更改,我輸入新密碼,然后我不得不禁用 Adblock 以使其正常工作。 我也是,adblock 相關的錯誤或退出,但是現在,當我使用新密碼提交表單時,什么也沒有發生,並且帳戶密碼保持不變:/

當然,我在網上尋找了一些提示/文檔,但沒有任何幫助我更進一步。

有人可以盡快幫助我嗎?

非常感謝,

大衛

用戶喜歡的功能

  Accounts.changePassword(OldPass, NewPass,function (err) {});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM