C'est un hachage pour le mot de passe client dans DB. Donc MD5 & Sha1 ne fonctionne pas.
UPDATE `customer_entity` SET `password` = MD5('test123') WHERE `email` = '[email protected]';
Alors, comment mettre à jour le mot de passe à l'aide d'une requête de base de données. Peut-être MD5(Sha1('test123'))
?
Comment fonctionne Magento via le code. aller àvendor\magento\module-customer\Console\Command\UpgradeHashAlgorithmCommand.php
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->collection = $this->customerCollectionFactory->create();
$this->collection->addAttributeToSelect('*');
$customerCollection = $this->collection->getItems();
/** @var $customer Customer */
foreach ($customerCollection as $customer) {
$customer->load($customer->getId());
if (!$this->encryptor->validateHashVersion($customer->getPasswordHash())) {
list($hash, $salt, $version) = explode(Encryptor::DELIMITER, $customer->getPasswordHash(), 3);
$version .= Encryptor::DELIMITER . Encryptor::HASH_VERSION_LATEST;
$customer->setPasswordHash($this->encryptor->getHash($hash, $salt, $version));
$customer->save();
$output->write(".");
}
}
$output->writeln(".");
$output->writeln("<info>Finished</info>");
}
Réponses:
Ce SQL fonctionne très bien pour mettre à jour le mot de passe client. Testé avec Magento 2.1.5.
Changez juste "VOTRE MOT DE PASSE" ci-dessous (gardez le xxx: es) et le tour est joué!
la source
Je n'ai jamais pensé à utiliser le hachage SHA en SQL directement avant d'avoir vu la réponse de Robban . Je voudrais ajouter que vous pouvez également générer le hachage en SQL, en ne laissant que le mot de passe à ajouter. Vous pouvez utiliser des variables ( set-statement ) pour définir toutes les valeurs nécessaires à l'avance:
la source
Je ne pense pas qu'il soit possible de définir le mot de passe depuis l'intérieur de la base de données. Vous devez
SHA256
hacher les mots de passe des clients. Voici comment Magento le génère:exemple de mot de passe dans DB:
c'est le format:
ABC
Où
B =
$salt
= chaîne aléatoire de 32 caractèresA =
hash('sha256', $salt . $password);
C = version de l'algorithme de hachage (par défaut = 1)
la source
test
. Exemple PHP / MagentoVous pouvez générer un hachage de mot de passe de style Magento 2 assez facilement via PHP en ligne de commande (CLI).
Utilisez cette commande pour générer un hachage, comme exemple de mot de passe
test123
(changez-le en votre propre mot de passe):Il utilise MD5 du temps Epoch actuel (
time()
) comme sel, mais vous pouvez également utiliser autre chose.Copiez ce hachage généré et collez-le dans votre requête ou votre outil de gestion de base de données sur la
password_hash
colonne d' un enregistrement client .la source
Essayez simplement la requête mysql ci-dessous
Où entity_id est votre identifiant utilisateur Il y a 3 valeurs séparées par: signe Dans notre cas
Une fois que vous exécutez cette requête dans db, puis connectez-vous en utilisant le mot de passe mentionné et revenez à la table de base de données et vérifiez le mot de passe, vous remarquerez que magento a automatiquement changé le mot de passe en mot de passe standard magento2, c'est-à-dire xxxxxx: yyyyyy: 1
la source