Passportjs本地策略返回'无效凭证',有没有办法覆盖这个?

时间:2015-08-29 21:37:24

标签: node.js express passport.js

护照最近一直是我身边真正的荆棘。我正在尝试注册用户并进行自定义回调。但是,如果用户没有提供用户名和密码,只是提交表单,我就会收到“无效凭据”错误。我想在此之前拦截它,所以我可以像其余的错误消息一样格式化它,并将其发回。

有没有办法做到这一点?我偷了护照,找不到任何东西。

1 个答案:

答案 0 :(得分:0)

你可以在回调中实现这一点,看看这个例子(不是漂亮的代码,但它很好地说明了这个想法)。在这种情况下,如果用户凭据有效但用户尚未确认其电子邮件地址,我将返回一个flash对象以通知用户该错误。您还可以让护照上的/success/failure选项的用户在身份验证成功或失败时调用特定网址。

app.post('/login', function(req, res, next){
      passport.authenticate('local', function(error, user, info){
        if(error){
            //handle error here
        }
        else{
          if(!user){
            res.status(404).end();
          } else{
            req.logIn(user, function(error){
              if(error) return res.status(500).end();
              if(!user.isEmailConfirmed){
                  req.session.flash = {
                      type: 'warning',
                      intro: 'Achtung',
                      message: 'error message'
                  };
                  res.redirect('/');
              }
              else res.redirect('/');
            });
          }
        }
      })(req, res, next);
    });