首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Express Passport (node.js)错误处理

Express Passport (node.js)错误处理
EN

Stack Overflow用户
提问于 2013-03-30 04:44:23
回答 3查看 76.1K关注 0票数 71

我已经研究了如何通过this question 在节点中进行错误处理,但我不确定passport在身份验证失败时会做什么。我有以下LocalStrategy:

代码语言:javascript
复制
passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' },
  function(email, password, next) {
 
    User.find({email: UemOrUnm}, function(err, user){
      if (err) { console.log('Error > some err'); return next(err); }
      if (!user) { console.log('Error > no user'); return next('Incorrect login or password'); } 

      if (password != user.password) {
        return next(Incorrect login or password);
      }
      return next(null, user);
    });
  }
));

在我看到'Error > some err‘控制台打印输出后,没有发生任何其他事情。我认为它应该使用错误参数继续下一条路径,但它似乎没有做到这一点。到底怎么回事?

EN

回答 3

Stack Overflow用户

发布于 2015-05-13 04:00:37

克里斯蒂安所说的是你需要添加一个函数

代码语言:javascript
复制
req.login(user, function(err){
  if(err){
    return next(err);
  }
  return res.send({success:true});
});

因此,整个路线将是:

代码语言:javascript
复制
app.post('/login', function(req, res, next) {
  passport.authenticate('local', function(err, user, info) {
    if (err) {
      return next(err); // will generate a 500 error
    }
    // Generate a JSON response reflecting authentication status
    if (! user) {
      return res.send(401,{ success : false, message : 'authentication failed' });
    }
    req.login(user, function(err){
      if(err){
        return next(err);
      }
      return res.send({ success : true, message : 'authentication succeeded' });        
    });
  })(req, res, next);
});

来源:http://passportjs.org/guide/login/

票数 22
EN

Stack Overflow用户

发布于 2015-02-21 01:44:58

您需要添加req.logIn(function (err) { });并在回调函数中执行成功重定向

票数 3
EN

Stack Overflow用户

发布于 2021-10-06 04:47:02

一段时间过去了,现在最正确的代码是:

代码语言:javascript
复制
  passport.authenticate('local', (err, user, info) => {
    if (err) {
      return next(err); // will generate a 500 error
    }
    // Generate a JSON response reflecting authentication status
    if (!user) {
      return res.status(401).send({ error: 'Authentication failed' });
    }
    req.login(user, (err) => {
      if (err) {
        return next(err);
      }
      return res.status(202).send({ error: 'Authentication succeeded' });    
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15711127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档