我想在我的网站上进行身份验证。我是用passport.js完成的,一切似乎都很好,但是有一个大问题。如果我在登录时输入错误的用户名或密码,则整个服务器将关闭。我的代码中出现了'if'语句,当密码错误时,该语句应显示闪烁消息。它与注册完美配合。以下是我文件中具有登录身份验证和控制台中的整个错误的部分代码。
错误代码
文件route.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
}))};
提交文件password.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);
});
}));
文件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);
};
答案 0 :(得分:0)
在'virtualedit'
中键入错误。正确的是:failureRedirect。