2012-06-29 9 views
5

मैं एक पुराने Magento एंटरप्राइज़ इंस्टॉलेशन में पुरानी सास साइट माइग्रेट कर रहा हूं और विश्वास नहीं करता कि मैं ग्राहकों के पासवर्ड को स्थानांतरित करने में सक्षम हूं। वे पर्ल क्रिप्ट() फ़ंक्शन का उपयोग करके एन्क्रिप्टेड हैं।Magento ग्राहकों को कोई पासवर्ड नहीं माइग्रेट करें।

मुझे आश्चर्य है कि इसके लिए सबसे अच्छा वर्कफ़्लो क्या हो सकता है, क्योंकि मुझे यकीन है कि दूसरों को कुछ इसी तरह से चलना होगा।

मैं अपने सभी ग्राहकों पूछ एक नया पासवर्ड बनाने के लिए, या उन्हें अगली बार जब वे में लॉग इन करने कहने वाला एक ईमेल भेजने के लिए होने आपत्ति नहीं है।

लेकिन क्या मैं के लिए पासवर्ड फील्ड में रखना चाहिए आयात? सुरक्षा के लिए मैं निश्चित रूप से सभी को एक ही अस्थायी पासवर्ड नहीं दे सकता।

हमारे पास लगभग 123,000 ग्राहक हैं (जिनमें से कई शायद अब सक्रिय नहीं हैं) इसलिए इसमें थोड़ी देर लग सकती है।

अग्रिम धन्यवाद।

उत्तर

5

मुझे लगता है कि सबसे अच्छा तरीका है जैसा कि नीचे बताया खातों के साथ पासवर्ड को स्वत: जनरेट करने के लिए, सभी का उपयोग कर Magento के अंतर्निहित कार्यक्षमता, है:

$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

मैंने $ ग्राहक-> setPassword ($ newPassword) का उपयोग किया है; $ ग्राहक के बजाय-> बदलें पासवर्ड ($ नया पासवर्ड); –

+0

आप किस Magento संस्करण का उपयोग कर रहे हैं? उपर्युक्त 1.6 और उससे ऊपर के साथ परीक्षण किया गया था। –

+0

मैं Magento सीई 1.7 संस्करण का उपयोग कर रहा हूँ –

2

जैसा कि इस विकी पेज द्वारा इंगित किया गया है, Magento नमकीन के साथ-साथ अनसाल्टेड MD5 हैश का समर्थन करता है। यह तकनीकी रूप से सच है, लेकिन इसे पर काम करने के लिए यह सब सीधा है।

असल में, आपको नमक के रूप में खाली स्ट्रिंग के साथ MD5 हैश किए गए पासवर्ड पर प्रतिलिपि बनाने की आवश्यकता है।

उदा।, पासवर्ड "foobar" ले लो, एमडी 5 हैश "3858f62230ac3c915f300c664312c63f" है। यदि आप इसे सीधे डीबी में डालते हैं, तो यह काम नहीं करेगा। प्रमाणीकरण प्रणाली नमक प्राप्त करने के लिए पासवर्ड हैश में ":" की तलाश में है। नीचे की रेखा, अंत में एक ":" जोड़ें और Magento कुछ भी नहीं के साथ पासवर्ड नमक करेगा, इसलिए आप नियमित MD5 हैश वापस प्राप्त करें।

"3858f62230ac3c915f300c664312c63f" -> "3858f62230ac3c915f300c664312c63f:"

तुम भी बस बेतरतीब ढंग से पासवर्ड बना सकते हैं, वे एक तरह से टुकड़ों में बांटा जाता है और ग्राहकों को कर सकते हैं एक नया पासवर्ड उत्पन्न करने के लिए आसानी से अपना पासवर्ड रीसेट करें जो आयात करने की कोशिश करने के बजाय उन्हें ईमेल किया जाएगा मौजूदा पासवर्ड

+1

धन्यवाद, हाँ, वे MD5 हैंड पासवर्ड नहीं हैं। मुझे यादृच्छिक पासवर्ड बनाना होगा और उन्हें रीसेट करना होगा। धन्यवाद, – willboudle

0

रीसेट किया जा रहा उपयोगकर्ता पासवर्ड मेरी बहुत अंतिम उपाय होगा। यदि आप जानते हैं कि पासवर्ड एन्क्रिप्ट करने के लिए हैशिंग विधि का उपयोग किया गया था तो आपको पासवर्ड रीसेट करने की आवश्यकता नहीं है।

ग्राहकों के पासवर्ड को अपने हैश और नमक कॉम्बो के रूप में Magento डेटाबेस में माइग्रेट करें। फिर आप Magento में पासवर्ड हैशिंग विधि को अधिभारित कर सकते हैं यह जांचने के लिए कि क्या ग्राहक के पास पुराना हैश या नया हैश है।

यदि ग्राहक का पुराना हैश पासवर्ड की जांच करने के लिए आपकी पुरानी क्रिप्ट विधि और नमक का उपयोग करता है।यदि आप चाहते थे तो फिर सफलतापूर्वक प्रमाणीकृत नई विधि में अपडेट करें।

यदि आप php में हैश फ़ंक्शन बनाने में सक्षम हैं जो सबसे आसान होगा। वैकल्पिक रूप से केवल php से एक perl प्रोग्राम कॉल करें।

संबंधित मुद्दे