这个网站只会有管理员用户,我创建了架构,注册视图和路由,但是路由逻辑有些问题。
/注册页面只有三个输入,即用户名,密码和电子邮件地址。目前,如果用户使用任何随机密码输入,将显示一个闪烁错误,提示密码无效,并将我重定向到登录页面,但是它仍在数据库中创建新用户。
此外,如果用户使用正确的密码,则发生与上述相同的事情。 我究竟做错了什么? 这是我的代码:
模式
var UserSchema = new mongoose.Schema({
username: {
type: String,
unique: true,
required: true
},
password: {
type: String
},
email: {
type: String,
unique: true,
required: true,
lowercase: true,
},
resetPasswordToken: String,
resetPasswordExpires: Date,
// isAdmin: {type: Boolean, default: false, required:true}
});
注册视图
<form class="form-group" action="/register" method="POST">
<div class="form-group">
<input class="form-control mb-1" type="text" name="username">
</div>
<div class="form-group">
<input class="form-control mb-3" type="password" name="password">
</div>
<div class="form-group">
<input class="form-control" type="email" name="email">
</div>
<button class="btn btn-outline-info w-100">Register!</button>
</form>
路线
// register route
router.get("/register", function(req, res) {
res.render("register", {page: "register"});
});
// handle sign up logic
router.post("/register", function(req, res){
var newUser = new User({
username: req.body.username,
email: req.body.email
});
User.register(newUser, req.body.password, function(err, user){
if(err){
console.log(err);
return res.render("register", {error: err.message});
} else {
if(req.body.password !== process.env.ADMIN_CODE) {
req.flash('error', 'the password is not valid');
res.redirect("/");
} else {
passport.authenticate("local")(req, res, function(){
req.flash("success", "Great! Welcome! " + req.body.username);
res.redirect("/");
});
}
}
});
});