Hallo zusammen, gehashte Passwort zu bestätigen,
Unable
ich meinen Benutzer mit bcrypt Modul am authentifizieren.
Ich bin in der Lage, den Registrierungsprozess durchzuführen, aber vor dem Problem während Login Prozess.
Benutzermodell:
var userSchema = new Schema({
email: {type: String, required: true},
password: {type: String,
});
Hashing Methoden:
userSchema.methods.encryptPassword = function (password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(5), null)
};
userSchema.methods.validPassword = function (password) {
return bcrypt.compareSync(password, this.password);
};
Anmelden:
module.exports.login = function (user, callback) {
User.findOne({'email': user.email, 'password': user.validPassword(this.password)}, callback);
};
Anmeldung Strecke
router.post('/login', function (req, res) {
var user = req.body;
User.login(user, function (err, user) {
if (err) {
throw err;
}
if (!user) {
res.sendStatus(404);
return;
}
res.json(user.id);
});
});
Während der Ausführung ist immer diese Fehlermeldung: Typeerror: user.validPassword ist keine Funktion
Bitte um Hilfe.
Ich möchte die Bedingungen in ** Anmelden ** code.Rather nicht verarbeiten Ich möchte nur eine Mongo-Abfrage ausführen und die Ergebnisse überprüfen die ** Einloggen ** Route. –
Ohne Hashing konnte ich Benutzer anmelden.
'module.exports.login = function (Benutzer, Rückruf) { User.findOne ({'email': user.email, 'password': Benutzer.validPassword (this.Passwort)}, Rückruf); }; ' –
Ich denke, der große Unterschied hier ist, dass durch das Hashing des Passworts (und die Verwendung von' bcrypt', die das Salzen beinhaltet), die Möglichkeit der Abfrage nach einem bestimmten Passwort in Ihrer Datenbank entfällt (eine gute Sache). Mit anderen Worten, 'bcrypt' kann Ihnen nicht sagen, was das richtige" Passwort "(in Ihrer Datenbank) ist, ohne bereits einige Informationen aus der Datenbank zu kennen (das Salz). –