如何使用护照节点设置管理员密码

时间:2019-03-03 19:09:49

标签: node.js mongoose passport.js

这个网站只会有管理员用户,我创建了架构,注册视图和路由,但是路由逻辑有些问题。

/注册页面只有三个输入,即用户名,密码和电子邮件地址。目前,如果用户使用任何随机密码输入,将显示一个闪烁错误,提示密码无效,并将我重定向到登录页面,但是它仍在数据库中创建新用户。

此外,如果用户使用正确的密码,则发生与上述相同的事情。 我究竟做错了什么? 这是我的代码:

模式

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("/"); 
                });
            }   
        }  
    });
});

0 个答案:

没有答案