Pergunta

Eu tenho os dados existentes do cliente, que inclui endereços de e-mail e senhas (já MD5 hash.)

Posso importar estes dados para o Magento, mantendo os clientes existentes senhas?

Será uma substituição do Magento cliente de autenticação de classe necessária?

Foi útil?

Solução

Você não precisa modificar o Magento autenticação de classes.Você pode importar senhas já MD5 criptografados.Eu testei isso.

Primeiro, um olhar como o Magento CE armazena senhas

salt = gg6s1b3f9s4dd (randomly generated every time a password is changed)
password = mypassword2015 (chosen by customer)
Encrypted Password = md5(salt.password).":".salt

Explained as .....
Step 1: md5(gg6s1b3f9s4ddmypassword2015).":".salt
Step 2: 7df0a5d9d07a06db6c7022d1e6ea2a57.":".salt
Final Result: 7df0a5d9d07a06db6c7022d1e6ea2a57:gg6s1b3f9s4dd 

Where the first string is the MD5 password with the salt,
and after the : is the salt that was used.

Portanto para importar um já criptografadas de senhas MD5

MD5_Password: a230b06a0387f5c697f08d83517cbb5d
Step 1: MD5_Password.":"
Final Result: a230b06a0387f5c697f08d83517cbb5d:

Podemos ver que o Magento procura por um ":" (dois pontos) na cadeia, e assume o que vem depois é o Sal.Se você colocar um ":" (dois pontos) no final do seu já de palavra-passe encriptada e, em seguida, nada mais, Magento vai perceber que não há sal para essa palavra-passe.

TL;DR Basta adicionar um ":" (dois pontos) para o final de seu já MD5 palavra-passe encriptada.

Obter a palavra-passe para Magento

Tudo bem, então agora nós sabemos o que precisamos fazer para nossas senhas, como podemos obtê-los em Magento?Normalmente Magento irá criptografar automaticamente uma senha que você dê a ele, mas no nosso caso, nós NÃO queremos isso, porque ela já está feita.

Acontece, isso é simples demais!Quando criar ou actualizar uma já existente do cliente pelo código que você normalmente usa para definir a sua palavra-passe:

$customer->setPassword("Plain Text Password");

Basta que substitua

$customer->setPasswordHash("Already Encrypted Password");

Outras dicas

Magento CE usa um sal de hash MD5.

Você precisa over-ride Mage_Customer_Model_Session::login() ou Mage_Customer_Model_Customer::validatePassword adaptar para os diferentes senhas.

O que disse, a alteração de métodos de autenticação de senha é uma péssima idéia. Considerar apenas ter seus clientes redefinir suas senhas em vez disso.

Além disso, o fato de que o Magento usa o MD5 no CE e SHA2 na EE é uma piada.MD5 é ruim e inseguro.Eu acho que só EE clientes em us $15K+ por licença de obter segurança adequada.

Magento é a forma fora de linha aqui.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange
scroll top