我正在将过时的Saas网站迁移到新的magento企业安装,并且不相信我将能够转移客户密码。它们使用Perl crypt()函数加密。
我想知道这可能是最好的工作流程,因为我确信其他人必须遇到类似的问题。
我不介意发送电子邮件,要求我们的所有客户创建新密码,或在他们下次登录时询问他们。
但是我应该在密码字段中输入什么?为了安全起见,我肯定无法给每个人提供相同的临时密码。
我们有近123,000名客户(其中许多人可能不再活跃),所以可能需要一段时间。
提前致谢。
答案 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程序。