Я хочу сделать аутентификацию на моем сайте. Я сделал это с паспортом. js, и все вроде бы хорошо, но есть одна большая проблема. Если я ввожу неправильное имя пользователя или пароль при входе в систему, весь сервер отключается. У меня есть операторы «if» в моем коде, которые должны показывать fla sh массажи, когда пароль неправильный. Отлично работает с регистрацией. Ниже приведены части кода в моих файлах с аутентификацией при входе в систему и всей ошибкой с консоли.
код ошибки
https://prnt.sc/s70s5m
файловые маршруты. js
const User = require("../models/user");
const Post = require("../models/post");
module.exports = function(app,passport){
app.get("/login", function(req,res){
res.render("login", {message:req.flash("loginMessage")});
});
app.post("/login", passport.authenticate("local-login", {
successRedirect:"/",
failureRedorect:"/login",
failureFlash:true
}))};
паспорт файла. js
passport.use('local-login', new LocalStrategy({
passReqToCallback : true
},
function(req, username, password, done) {
User.findOne({ 'local.username' : username }, function(err, user) {
if (err)
return done(err);
if (!user)
{
return done(null, false, req.flash('loginMessage', 'No user found.'));
}
if (!user.validPassword(password))
{
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.'));
}
else
return done(null, user);
});
}));
пользователь файла . js
const mongoose = require("mongoose"),
bcrypt = require("bcrypt-nodejs");
var userSchema = new mongoose.Schema({
local: {
username:String,
password:String
}
});
userSchema.methods.generateHash = function(password) {
return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};
userSchema.methods.validPassword = function(password) {
return bcrypt.compareSync(password, this.local.password);
};