我使用本地护照的策略:
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状态,我希望客户端收到我的状态消息:'用户名和/或密码不正确'。相反,我在回复正文中看到的只是“未经授权”这个词。我该如何访问该消息?
感谢。
答案 0 :(得分:0)
您可以使用req.authInfo
访问要传递的对象作为第三个参数。然后,您可以从中检索data
。
答案 1 :(得分:0)
问题是:当我接受POST请求时:
app.post('/login', passport.authenticate('local'), function(req, res) {
console.log(req.authInfo);
res.send(req.user);
});
如果是401状态,则不会调用console.log(req.authInfo),仅在200的情况下才会调用。如何解决?
答案 2 :(得分:0)
请参阅此帖子的回复: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 });
}