简体   繁体   English

Passport.js更改默认错误消息

[英]Passport.js change default error message

I'm using Passport.js for authentication in my node/express app, when input fields are empty passport displays default message "Missing credentials", how can i change that? 我在节点/快捷应用中使用Passport.js进行身份验证,当输入字段为空时,护照显示默认消息“缺少凭据”,我该如何更改? to say something like please fill the form or something 说些类似的东西,请填写表格或类似的东西

here my local strategy for login: 这是我的本地登录策略:

  passport.use('login', new LocalStrategy({
      usernameField: 'email',
      passwordField: 'password'
    },
    function(email, password, done) {
      models.User.findOne({where: {email}}).then(user => {
        if (!user)
          return done(null, false, {message: 'Email not registered'});
        user.checkPassword(password).then(res => {
          if (!res)
            return done(null, false, {message: 'Incorrect username or password'});
          return done(null, user);
        });
      });
    }));

login route: 登录路径:

router.post('/login', passport.authenticate('login', {
  successRedirect: '/',
  failureRedirect: '/login',
  failureFlash: true
}));

I got it, looks like i can pass optional callback to authenticate function to override default functionality, thanks oneturkmen for reference. 我知道了,看来我可以通过可选的回调函数来验证功能以覆盖默认功能,谢谢oneturkmen供参考。

here's modified route: 这是修改后的路线:

router.post('/signup', (req, res) => {
  passport.authenticate('signup', (err, user, info) => {
    const body = req.body;
    if (req.body.username === '' || req.body.email === '' || req.body.password === '')
      info.message = 'Please fill the form';
    req.logIn(user, err => {
      if (err) res.render('users/signup', info);
      else res.redirect('/');
    });
  })(req, res);
});

An alternative is to add " badRequestMessage " to your code 另一种方法是在您的代码中添加“ badRequestMessage

Your code will look like this 您的代码将如下所示

router.post('/login', passport.authenticate('login', {
  successRedirect: '/',
  failureRedirect: '/login',
  badRequestMessage : 'Please fill the form',
  failureFlash: true
}));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM