Magento无需密码即可迁移客户。

时间:2012-06-29 15:28:47

标签: magento

我正在将过时的Saas网站迁移到新的magento企业安装,并且不相信我将能够转移客户密码。它们使用Perl crypt()函数加密。

我想知道这可能是最好的工作流程,因为我确信其他人必须遇到类似的问题。

我不介意发送电子邮件,要求我们的所有客户创建新密码,或在他们下次登录时询问他们。

但是我应该在密码字段中输入什么?为了安全起见,我肯定无法给每个人提供相同的临时密码。

我们有近123,000名客户(其中许多人可能不再活跃),所以可能需要一段时间。

提前致谢。

3 个答案:

答案 0 :(得分:4)

我认为最好的方法是使用Magento的内置功能自动生成密码和帐户,如下所示:

$customer = Mage::getModel('customer/customer');

$password = '123456';
$email = 'testuser@test.com';

$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);

if(!$customer->getId()) { // if customer does not already exists, by email
    // new data
    $customer->setEmail($email);
    $customer->setFirstname('Johnny');
    $customer->setLastname('Doels');
    $newPassword = $customer->generatePassword(); // generate a new password
    $customer->changePassword($newPassword); // set it

} else {
    // do something here for existing customers
}

try {
    $customer->save();
    $customer->setConfirmation(null);
    $customer->save();
    $customer->sendPasswordReminderEmail(); // save successful, send new password
}

catch (Exception $ex) {
    //Zend_Debug::dump($ex->getMessage());
}

答案 1 :(得分:2)

  

正如此维基页面所示,Magento支持盐渍以及   无盐MD5哈希。这在技术上是正确的,但让它工作   这一切都很简单。

     

基本上,您需要复制MD5哈希密码为空   字符串作为盐。

     

,例如,输入密码“foobar”,MD5哈希是   “3858f62230ac3c915f300c664312c63f”。如果你把它直接放在   db,它不会工作。身份验证系统在中查找“:”   密码哈希得到盐。底线,在末尾添加“:”   没有任何东西,Magento会将密码加密,所以你就得到了   常规的MD5哈希回传。

     

“3858f62230ac3c915f300c664312c63f” - >   “3858f62230ac3c915f300c664312c63f:”

您也可以随意创建密码,它们是一种方法,客户可以轻松重置密码以生成新密码,通过电子邮件发送给他们,而不是尝试导入现有密码。

答案 2 :(得分:0)

重置用户密码将是我的最后手段。如果您知道使用什么哈希方法来加密密码,那么您不需要重置密码。

将客户密码作为哈希和盐组合迁移到magento数据库中。然后,您可以重载magento中的密码哈希方法,以检查客户是否有旧的哈希值或新哈希值。

如果客户有旧的哈希,请使用旧的crypt方法和salt来检查密码。如果您愿意,可以更新到新方法,它已成功验证。

如果你能够在php中创建最简单的哈希函数。或者只是从php调用一个perl程序。