1

我正在使用 express 并且我正在创建一个连接到 mongo 数据库的注册页面,我做到了,当用户键入与另一个用户相同的电子邮件时,它会使用 connect-flash “电子邮件已在使用中”闪烁一条消息,但它没有显示在我的网站上,即使我放了另一条消息“无效的电子邮件”,它仍然有效。

index.js 代码:

router.get('/user/signup', function(req, res, next) {
  var messages = req.flash('error');
  res.render('user/signup', {csrfToken: req.csrfToken(), messages : messages, hasErrors: messages.length > 0});
});

护照.js代码:

passport.use('local.signup', new LocalStrategy({
  usernameField : 'email',
  passwordField : 'password',
  passReqToCallback: true
}, function(req, email, password, done){
  req.checkBody('email', 'Invalid email').notEmpty().isEmail();
  req.checkBody('password', 'Invalid password').notEmpty().isLength({min:4});
  var errors = req.validationErrors();
  if (errors) {
    var messages = []
    errors.forEach(function(error) {
      messages.push(error.msg);
    });
    return done(null, false, req.flash('error', messages));
  }
  User.findOne({'email': email}, function(err, user){
    if (err) {
      return done(err);
    }
    if (user) {
      return done(null, false, {message: 'Email is already in use'});
    }
    var newUser = new User();
    newUser.email = email;
    newUser.password = newUser.encryptPassword(password);
    newUser.save(function(err, result){
      if (err) {
        return done(err);
      }
      return done(null, newUser);
    });
  });
}));

4

0 回答 0