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 });
}