3

When I'm trying to reset password through reset link from my mail, it's showing following error:

Your password reset link has expired.

When I check my password reset link it looks like:

http://example.com/index.php/customer/account/resetpassword/?id=327

the reset password token is not generating I've checked the reset password template and it's looking fine:

<a href="{{store url="customer/account/resetpassword/" _query_id=$customer.id _query_token=$customer.rp_token}}"><span>Reset Password</span></a>

and I didn't update anything in my AccountController.php

public function changeForgottenAction()
{
    try {
        list($customerId, $resetPasswordLinkToken) = $this->_getRestorePasswordParameters($this->_getSession());
        $this->_validateResetPasswordLinkToken($customerId, $resetPasswordLinkToken);
        $this->loadLayout();
        $this->renderLayout();
    } catch (Exception $exception) {
        Mage::log($exception);
        $this->_getSession()->addError($this->_getHelper('customer')->__('Your password reset link has expired.'));
        $this->_redirect('*/*/forgotpassword');
    }
}
  • I have experience the same thing. Did you find a solution? – David Hayes Apr 19 '17 at 17:17
  • You are missing the password reset token in your url, see my solution. It should show something similar to this: customer/account/resetpassword/?id=585&token=941a6fad20d128b4e04cbab260060b19 – Frank Groot Jun 30 '17 at 14:56
1

You'll need to do some digging, as seen the catch (Exception $e){} method catches any exception and outputs that message.

Try logging the exception:

Mage::log($e, null, 'customer_password_reset.log');

Then you can inspect the log file & identify what is causing the issue & figure out how to resolve it.

0

It can be related to a template file. I experienced the same error when i tried to update my password.

Try to replace the following in: /app/design/frontend/base/default/template/customer/form/resetforgottenpassword.phtml

Before:

<form action="<?php echo $this->getUrl('*/*/resetpasswordpost'); ?>" method="post" id="form-validate">

After:

<form action="<?php echo $this->getUrl('*/*/resetpasswordpost', array('_query' => array('id' => $this->getCustomerId(), 'token' => $this->getResetPasswordLinkToken()))); ?>" method="post" id="form-validate">

After you changed it please try again.

0

Maybe you use old email templates:

Replace

{{store url="customer/account/resetpassword/" _query_id=$customer.id _query_token=$customer.rp_token}} with

{{store url="customer/account/resetpassword/" _query_id=$customer.rp_customer_id _query_token=$customer.rp_token}}

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.