Javascript Passport JS无法检索用户
下面是我在passportJS中的注册策略。在passport.authenticate方法成功对策略进行身份验证之后,大多数代码都可以正常运行,直到我转到res.send用户参数的底部。然而,每当我收到回复时,我就会收到一个带有“false”消息的页面。我收到的不是用户详细信息,而是“false”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(用户); });` 通过这种方式,您引入了将在
您应该使用
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);