【发布时间】:2019-04-25 02:26:43
【问题描述】:
我正在尝试在注册过程中使用护照本地猫鼬验证密码,但它不起作用。它不会引发错误,但是当我使用不符合验证条件的密码注册时,它会被接受。这是用户架构:
var UserSchema = new mongoose.Schema({
email: {
type: String,
unique: true
},
password: String,
displayname: String,
firstName: String,
lastName: String,
resetPasswordToken: String,
resetPasswordExpires: Date,
avatar: String,
Bio: String,
isAdmin: {type: Boolean, default: false}
});
var passwordValidator = function(password, cb){
var regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/;
if(!password.match(regex)){
return cb(null, false)
}
return cb(null, true);
}
UserSchema.plugin(passportLocalMongoose, {
usernameField: "email",
errorMessages: {
IncorrectPasswordError: "Password incorrect",
IncorrectUsernameError: "There is no account registered with that email",
UserExistsError: "A user with the given email is already registered"
},
passwordValidator: passwordValidator
});
module.exports = mongoose.model("User", UserSchema);
注册码:
router.post("/register", upload.single("avatar"), function(req, res){
cloudinary.v2.uploader.upload(req.file.path, function(err, result){
if(err) {
req.flash("error", err.message);
return res.redirect("back");
}
var newUser = new User({displayname: req.body.displayname,
firstName: req.body.firstName,
lastName: req.body.lastName,
email: req.body.email,
Bio: req.body.bio,
avatar : result.secure_url
});
if(req.body.adminCode === "secretcode123"){
newUser.isAdmin = true;
}
User.register(newUser, req.body.password, function(err, user){
if(err){
console.log(err);
req.flash("error", err.message);
return res.redirect("/register");
}
passport.authenticate("local")(req,res, function(){
req.flash("success", "Welcome " + " " + user.displayname);
res.redirect("/campground");
})
});
})
我如何获得它来验证密码?
【问题讨论】:
标签: node.js mongoose passport-local