4

古いSaasサイトを新しいmagentoエンタープライズインストールに移行していますが、顧客のパスワードを転送できるとは思いません。これらは、Perl crypt()関数を使用して暗号化されます。

他の人が似たようなものに遭遇したに違いないので、これに最適なワークフローは何でしょうか。

すべてのお客様に新しいパスワードの作成を依頼するメールを送信したり、次回のログイン時にお客様に依頼したりする必要があります。

しかし、インポートするためにパスワードフィールドに何を入力する必要がありますか?セキュリティのために、全員に同じ一時パスワードを与えることはできません。

約123,000人の顧客がいます(その多くはおそらくもうアクティブではありません)ので、少し時間がかかる場合があります。

前もって感謝します。

4

3 に答える 3

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());
}
于 2012-06-29T22:08:56.003 に答える
2

このwikiページに示されているように、Magentoは塩漬けおよび無塩のMD5ハッシュをサポートしています。これは技術的には真実ですが、それを機能させるのはとても簡単です。

基本的に、ソルトとして空の文字列を使用して、MD5ハッシュパスワードをコピーする必要があります。

たとえば、パスワード「foobar」を使用すると、MD5ハッシュは「3858f62230ac3c915f300c664312c63f」になります。これを直接データベースに入れると、機能しません。認証システムは、パスワードハッシュで「:」を探してソルトを取得します。結論として、最後に「:」を追加すると、Magentoはパスワードを何も付けずにソルトするため、通常のMD5ハッシュが返されます。

「3858f62230ac3c915f300c664312c63f」->「3858f62230ac3c915f300c664312c63f:」</ p>

また、パスワードをランダムに作成することもできます。パスワードは一方向にハッシュされ、顧客はパスワードを簡単にリセットして、既存のパスワードをインポートする代わりに、電子メールで送信される新しいパスワードを生成できます。

于 2012-06-29T15:53:50.950 に答える
0

ユーザーのパスワードをリセットすることが私の最後の手段になります。パスワードの暗号化に使用されたハッシュ方法がわかっている場合は、パスワードをリセットする必要はありません。

顧客のパスワードをハッシュとソルトの組み合わせとしてmagentoデータベースに移行します。次に、magentoのパスワードハッシュメソッドをオーバーロードして、顧客が古いハッシュまたは新しいハッシュを持っているかどうかを確認できます。

顧客が古いハッシュを持っている場合は、古いcryptメソッドとsaltを使用してパスワードを確認してください。必要に応じて、認証に成功した新しいメソッドに更新できます。

PHPでハッシュ関数を作成できれば、それが最も簡単です。または、phpからperlプログラムを呼び出すだけです。

于 2015-10-20T22:25:51.913 に答える