0

我试图告诉用户他们在登录期间输入的电子邮件地址或密码是错误的,而不是默认的“无效的电子邮件或密码”错误。

我去了相关的控制器文件:

.../app/code/core/Mage/Customer/controllers/accountcontroller.php

并将第 141 行的代码更改为:

catch (Mage_Core_Exception $e) {
     switch ($e->getCode()) {
          case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:
                if(Zend_Validate::is($login['username'], 'EmailAddress'))
                    $message = $this->__('Wrong password.');
                else
                    $message = $this->__('That email address was not found.');
                    //$message = $e->getMessage();
break;

我使用同一文件中 forgotPasswordPostAction() 函数中的 Zend_Validate::is() 来检查电子邮件是否已注册。但它在登录期间不起作用。即使电子邮件未注册,我也总是收到“密码错误”消息。

是因为我使用 Zend_Validate::is() 错误吗?检查电子邮件是否已注册的正确功能是什么?

谢谢!

4

1 回答 1

1

admin-user 有一个 authenticate_before 事件,而客户没有。

没有事件可以挂钩。您可能会做的,我认为这是一个坏主意,是扩展 Mage_Customer_AccountController 覆盖 loginPostAction 并更改

case Mage_Customer_Model_Customer::EXCEPTION_INVALID_EMAIL_OR_PASSWORD:

在这一点上,你有$session你可以$session->getCustomer()->loadByEmail($NEWCUSTOMER, $login['username'])

如果empty($NEWCUSTOMER->getData())那么电子邮件是错误的。

但是帮助破解者知道他是否攻击了正确的用户名是个坏主意!

于 2012-07-18T20:34:47.193 回答