Javascript Passport JS无法检索用户

Javascript Passport JS无法检索用户,javascript,node.js,express,authentication,passport.js,Javascript,Node.js,Express,Authentication,Passport.js,下面是我在passportJS中的注册策略。在passport.authenticate方法成功对策略进行身份验证之后,大多数代码都可以正常运行,直到我转到res.send用户参数的底部。然而,每当我收到回复时,我就会收到一个带有“false”消息的页面。我收到的不是用户详细信息,而是“false” 您应该使用passport.authenticate()作为函数(req,res)之前的第二个参数: }),功能(req,res){ res.send(用户); });` 通过这种方式,您引入了将在

下面是我在passportJS中的注册策略。在passport.authenticate方法成功对策略进行身份验证之后,大多数代码都可以正常运行,直到我转到res.send用户参数的底部。然而,每当我收到回复时,我就会收到一个带有“false”消息的页面。我收到的不是用户详细信息,而是“false”


您应该使用
passport.authenticate()
作为
函数(req,res)
之前的第二个参数:

}),功能(req,res){ res.send(用户); });`


通过这种方式,您引入了将在响应之前运行的身份验证中间件。查看此处:

您无法输出用户对象,因为您认为我应该创建的新函数超出了包含用户参数的函数范围,因此我将无法访问it@animsaj路由处理程序是正确的,它只是使用策略回调中调用
done
之前的
newUser
是否与您期望的一样?是的,模式是相同的
app.use(passport.initialize());
app.use(passport.session());

passport.serializeUser(function(user, done) {
  return done(null, user.id);
});

passport.deserializeUser(function(id, done) {
  User.findById(id, function(err, user) {
    done(err, user);
  });
});

passport.use("registerUser",
  new LocalStrategy({ passReqToCallback: true },
    function(req, username, password, done) {
      var newUser = new User({
        name: username,
        email: req.body.email,
        password: password
      });

      newUser.save(function(err) {
        if (err) {
          return done(err);
        }
        return done(null, newUser);
      });
    }));


app.get("/", function(req, res) {
  res.render("index", { title: "Register!", url: req.url });
});

app.post("/", function(req, res, next) {
  passport.authenticate("registerUser", function(err, user) {
    if (err) {
      return done(err);
    }
    res.send(user);
  })(req, res, next);
});
`app.post('/', passport.authenticate('registerUser', function(err, user) {
  if (err) return done(err);
  if (!user) return done(null, false);
  done(null, user);