So führen Sie die Benutzerauthentifizierung aus der WordPress-Datenbank in nodeJS durch.
Ich muss den Benutzer mithilfe der WordPress-Datenbank validieren, wenn Benutzername/Passwort korrekt sind. WordPress verwendet die PHPass PHP-Bibliothek, um Passwörter zu verschlüsseln. Aber ich muss das Passwort in NodeJS abgleichen.
Bearbeiten: Heute gibt es eine Implementierung, die WordPress-Portable-Hashes unterstützt: WordPress-Hash-Knoten.
Vorherige Antwort:
Seufz … Ich habe mich dafür interessiert und eine halbe Stunde damit verbracht, den PHPass-Quellcode zu durchforsten. Dann habe ich gegoogelt Knoten-Phpass.
Bearbeiten: Bei näherer Betrachtung scheint dies nur die bcrypt-Verschlüsselung zu implementieren, während der PHPass-Standard (den ich glaube, WordPress verwendet) etwas ist, das sie “Portable Hashes” nennen. node-phpass
wirft 'Portable hashes are not implemented'
wenn Sie nach tragbaren Hashes fragen. Ich schlage vor, Sie implementieren das für node-phpass
und einen Pull-Request senden.
Für WordPress 4.9.5, in NodeJS danach
npm i WordPress-Hash-Knoten
var hasher = require('wordpress-hash-node');
let wordpressHashPass = "$P$BzPE3JGpq4CUpvpMHhtPh3lZmIoG.s1";
let wordpressPlainTextPass="(&@fZsImcKq7K3Lmd&qBe!Jx";
var checked = hasher.CheckPassword(wordpressPlainTextPass, wordpressHashPass); //This will return true
console.log(checked); // returns true
var hasher = require('wordpress-hash-node');
let wordpressHashPass = "$P$BzPE3JGpq4CUpvpMHhtPh3lZmIoG.s1";
let wordpressPlainTextPass="goodday";
var checked = hasher.CheckPassword(wordpressPlainTextPass, wordpressHashPass); //This will return false
console.log(checked); // returns false
wordpressHashPass ist das MD5-gehashte Passwort, das Sie in der wp_users-Tabelle von WordPress für einen Benutzer finden können.
wordpressPlainTextPass ist das Klartextpasswort, das der Benutzer in das Passwortfeld eingibt.
Die Methode CheckPassword vergleicht das Klartext-Passwort und das Hash-Passwort. Es gibt true zurück, wenn es übereinstimmt, und false, wenn es nicht übereinstimmt.