passportjs - 如何在401

passportjs - 如何在401

问题描述:

的情况下访问状态消息,我使用passportjs的本地策略:passportjs - 如何在401

passport.use(new LocalStrategy(
function(username, password, done) { 
    if (username === "myuser" && password === "mypass") 
     return done(null, { name: "myuser" }); 

    return done(null, false, { data: 'Incorrect username and/or password' }); 
})); 

在401种状态的情况下,我想在客户端让我的状态消息: '不正确的用户名和/或密码'。相反,我在答复中看到的所有内容都是“未经授权”这个词。我怎样才能访问消息?

谢谢。

您可以使用req.authInfo访问作为第三个参数传递的对象。然后你可以从中检索data

问题是这样的:当我接受POST请求:

app.post('/login', passport.authenticate('local'), function(req, res) { 
    console.log(req.authInfo); 
    res.send(req.user); 
}); 

的执行console.log(req.authInfo)不会被调用中的401种状态的情况下,只有在200的情况下, 。 我如何解决它?

看到这个职位的响应:passport.js - Access fail message after 401 error

你必须把你的passport.authenticate在功能响应:

app.post('/login', function(req, res, next) { 
    passport.authenticate('local', function(err, user, response) { 
     if(!response.success) { 
      res.status(401).json({ 
      message: 'Incorrect username and/or password' 
      }); 
     } 
    })(req, res, next); 
}); 

很明显,你也把你的本地策略第三参数去

if(InvalidPassword or user not exist) { 
    return next(null, false, { success: false }); 
}