2012-06-29 42 views
5

Tôi đang di chuyển một trang web Saas lỗi thời sang một doanh nghiệp Magento mới cài đặt và không tin rằng tôi sẽ có thể chuyển mật khẩu khách hàng. Chúng được mã hóa bằng hàm Perl crypt().Magento Di chuyển khách hàng không có mật khẩu.

Tôi tự hỏi quy trình làm việc tốt nhất cho điều này có thể là gì, vì tôi chắc chắn những người khác phải chạy vào một thứ tương tự.

Tôi không nhớ phải gửi một bức thư yêu cầu tất cả khách hàng của chúng tôi để tạo ra một mật khẩu mới, hoặc yêu cầu họ lần sau khi họ đăng nhập.

Nhưng những gì tôi nên đặt trong lĩnh vực mật khẩu cho nhập khẩu? Để bảo mật, tôi chắc chắn không thể cung cấp cho tất cả mọi người cùng một mật khẩu tạm thời.

Chúng tôi có gần 123.000 khách hàng (nhiều người trong số đó có thể không còn hoạt động nữa) nên có thể mất một chút thời gian.

Xin cảm ơn trước.

Trả lời

5

Tôi nghĩ rằng cách tốt nhất là để tự động tạo mật khẩu cùng với các tài khoản, tất cả sử dụng chức năng built-in của Magento, như chứng minh dưới đây:

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

$password = '123456'; 
$email = '[email protected]'; 

$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

Tôi đã sử dụng $ customer-> setPassword ($ newPassword); thay vì $ customer-> changePassword ($ newPassword); –

+0

Bạn đang sử dụng phiên bản Magento nào? Ở trên đã được thử nghiệm với 1,6 và ở trên. –

+0

Tôi đang sử dụng phiên bản Magento CE 1.7 –

2

Như được chỉ ra trong trang wiki này, Magento hỗ trợ muối cũng như băm MD5 chưa được trộn. Điều này là đúng về mặt kỹ thuật, nhưng làm cho nó hoạt động tất cả đều đơn giản.

Về cơ bản, bạn cần phải sao chép mật khẩu băm MD5 bằng chuỗi trống rỗng làm muối.

Ví dụ: lấy mật khẩu “foobar”, hàm băm MD5 là “3858f62230ac3c915f300c664312c63f”. Nếu bạn đặt trực tiếp mã này vào số db, nó sẽ không hoạt động. Hệ thống xác thực tìm kiếm dấu “:” trong mã băm mật khẩu để lấy muối. Điểm mấu chốt, thêm dấu “:” vào cuối và Magento sẽ làm mất mật khẩu không có gì, vì vậy bạn chỉ cần lấy lại mã băm MD5 thông thường .

“3858f62230ac3c915f300c664312c63f” -> “3858f62230ac3c915f300c664312c63f:”

Bạn cũng có thể chỉ đơn giản là tạo ra một cách ngẫu nhiên các mật khẩu, họ được một cách băm và khách hàng có thể dễ dàng đặt lại mật khẩu của họ để tạo mật khẩu mới sẽ được gửi qua email cho họ thay vì cố gắng nhập mật khẩu hiện có.

+1

Cảm ơn, vâng họ không phải là mật khẩu băm MD5. Tôi sẽ phải tạo mật khẩu ngẫu nhiên và yêu cầu họ đặt lại mật khẩu. Cảm ơn, – willboudle

0

người dùng Reset mật khẩu sẽ là khu nghỉ mát cuối cùng của tôi. Nếu bạn biết phương pháp băm được sử dụng để mã hóa mật khẩu thì bạn không cần đặt lại mật khẩu.

Di chuyển mật khẩu khách hàng vào cơ sở dữ liệu magento dưới dạng kết hợp băm và muối của họ. Sau đó bạn có thể quá tải phương pháp băm mật khẩu trong Magento để kiểm tra xem khách hàng có một băm cũ có một băm cũ hay một băm mới.

Nếu khách hàng có hàm băm cũ, hãy sử dụng phương pháp mã hóa cũ và muối của bạn để kiểm tra mật khẩu.Nếu bạn muốn, bạn có thể cập nhật phương thức mới để xác thực thành công.

Nếu bạn có thể tạo hàm băm trong php dễ dàng nhất. Hoặc chỉ cần gọi một chương trình perl từ php.

Các vấn đề liên quan