2011-05-13 5 views
2

Je fais ce code dans un fichier php externe pour obtenir des informations des utilisateurs:Magento - Comment obtenir un client (utilisateur) Mot de passe

 $customerCollection = Mage::getResourceModel('customer/customer_collection') 
     ->addNameToSelect() 
     ->addAttributeToSelect('email') 
     ->joinAttribute('postcode', 'customer_address/postcode', 'default_billing', null, 'left')   
     ->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left') 
     ->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left') 
     ->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left'); 

Je veux aussi obtenir dans ma demande le mot de passe des utilisateurs.

Comment puis-je faire ça?

Merci beaucoup.

+0

... Pour clarifientÊtes-vous après le mot de passe ou le mot de passe MD5 salé? –

+0

Je ne comprends pas bien votre question Mathew, je veux juste obtenir le mot de passe, puis se connecter comme il est fait dans ce lien: http: //mysillypointofview.richardferaro.com/2010/03/25/how-to-run -magento-version-1-4-0-1-session-to-external-site/ Mais pas à partir d'un formulaire, je veux laisser l'administrateur se connecter avec le nom d'utilisateur et passe d'un client, à partir d'une page qui contient une liste des clients. Merci. – Bizboss

+0

J'ai vérifié ce lien, il utilise les fonctions de Magento pour voir si le mot de passe entré est le bon. Cela place le mot de passe $ _POST saisi dans MD5 et voit si le résultat est le même que celui stocké, qui est également haché via MD5. Le mot de passe réel n'est stocké sur le système à aucun moment pour des raisons de sécurité, vous ne pouvez donc pas le récupérer. Il existe un code permettant à un administrateur de se connecter à un compte, cela peut vous aider si vous écrivez une extension admin. –

Répondre

4

Pour répondre à vos commentaires, il n'y a pas de solution si vous avez besoin du mot de passe en clair, et c'est une très bonne chose. Si vous pouviez extraire le mot de passe d'un client de manière triviale, cela signifierait qu'un attaquant aurait également cette capacité. Pour éviter cela, Magento hache votre mot de passe (en utilisant MD5 ou SHA1, selon votre édition de Magento), et inclut une valeur "salt" pour ajouter à la complexité du mot de passe. C'est une pratique cryptographique standard.

Le lien que vous avez posté montre comment permettre aux clients d'utiliser leurs propres mots de passe pour se connecter à plusieurs sites à la fois. Mis à part le fait que le code sur cette page n'est pas très bon, il ne résoudra pas votre problème.

Si vous devez vous connecter en tant qu'utilisateur sur le frontend, il y a des modules pour le faire ou vous pouvez écrire le vôtre. Fondamentalement, vérifiez que vous disposez d'une session administrative valide avec la permission de vous connecter aux comptes d'utilisateur et que vous forcez les informations d'identification de connexion dans la session. Gardez à l'esprit que cela est déjà problématique du point de vue de la sécurité, mais cela peut être nécessaire pour votre entreprise.

Si vous essayez de vous connecter à un autre système que vous contrôlez en tant qu'utilisateur, vous êtes bloqué en train d'écrire le même module sur cette plate-forme. Si vous avez/trouvez une plate-forme qui vous permet de récupérer le mot de passe de l'utilisateur, arrêtez de l'utiliser jusqu'à ce que cette faille soit corrigée. Ce serait un énorme drapeau rouge pour tout système qui traite également des informations sensibles (par exemple, info client, informations de paiement).

Si vous avez d'autres questions (ou si vous fournissez un peu plus de détails sur ce que vous voulez accomplir), je serai heureux de vous aider. J'espère que cela pourra aider!

Merci, Joe

+0

Merci beaucoup Joseph, je veux justement laisser l'administrateur se connecter en tant que client, à cet effet, j'ai trouvé un lien qui contient du code source pour le faire depuis le backend. : http://benjion.wordpress.com/2011/04/29/magento-se-connecter-en-tant-que-client-depuis-ladmin/ mais je ne sais pas comment l'utiliser exactement, où vais-je collez le code ... Je serai très reconnaissant si vous pouvez aider avec ce code Merci – Bizboss

+0

Vous devrez exécuter le code quelque part dans Magento Je vous recommande de lire sur la façon de créer un module avec un contrôleur et y placer le code, mais si vous ne comprenez pas ce que le code fait, ne le collez pas simplement quelque part, avec un problème de sécurité comme celui-ci, le code de confiance que vous avez trouvé sur internet n'est pas t une bonne idée. –

+0

une solution réaliste pour faire cela? J'ai essayé le code seul et dans un module mais cela ne fonctionne pas. :( – Bizboss

0

vous pouvez obtenir le mot de passe haché du client de cette façon (disons que vous voulez un client en fonction de l'adresse e-mail):

$customer = Mage::getModel('customer/customer_api'); 
    $data = $customer->items(array('email' => customeremail));return $data['password']; 

espérons que cette aide :)

1

vous pouvez obtenir le mot de passe haché du client de la manière suivante si vous avez un email client.

$customer_password = Mage::getModel("customer/customer")->setWebsiteId(Mage::app() 
->getWebsite()->getId())->loadByEmail($customer_email)->getPasswordHash(); 

espérons que cette aide :)

Questions connexes