Node.js passportjs-在401情况下如何访问状态消息
我正在使用passportjs的本地策略:Node.js passportjs-在401情况下如何访问状态消息,node.js,passport.js,Node.js,Passport.js,我正在使用passportjs的本地策略: passport.use(new LocalStrategy( function(username, password, done) { if (username === "myuser" && password === "mypass") return done(null, { name: "myuser" }); return done(null, false, { data: 'Incorrect
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
访问作为第三个参数传递的对象。然后您可以从中检索数据。您可以使用req.authInfo
访问作为第三个参数传递的对象。然后您可以从中检索数据。问题是:当我接受POST请求时:
app.post('/login', passport.authenticate('local'), function(req, res) {
console.log(req.authInfo);
res.send(req.user);
});
在401状态下不会调用console.log(req.authInfo),只有在200状态下才会调用。如何修复它?问题是:当我接受POST请求时:
app.post('/login', passport.authenticate('local'), function(req, res) {
console.log(req.authInfo);
res.send(req.user);
});
在401状态下不会调用console.log(req.authInfo),只有在200状态下才会调用。如何修复它?请参阅此帖子的回复:
您必须在函数响应中输入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 });
}
见本帖的回复:
您必须在函数响应中输入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 });
}