Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js passportjs-在401情况下如何访问状态消息_Node.js_Passport.js - Fatal编程技术网

Node.js passportjs-在401情况下如何访问状态消息

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

我正在使用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 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 });
}