问题描述
我正在尝试使用护照js中的自定义回调对用户进行身份验证。我已经根据护照文件写了代码。
router.post("/signin/email",function (req,res,next) {
passport.authenticate("email-local",function (err,user,info) {
if (err) {
return res.send("err");
}
if (!user) {
return res.send(info);
}
req.logIn(user,function (err) {
if (err) {
return res.send(err);
}
next(user);
});
})(req,next),UsersController.getToken;
});
我想将用户传递给下一个中间件,即UsersController.getToken
,但是没有被传递。我该如何解决这个问题?
解决方法
在调用登录后,Passport会将用户数据添加到req.user
中,因此您不需要将其传递给next。
我建议将req.logIn
调用简化为以下内容:
return req.logIn(user,next)
然后在UsersController.getToken
中间件中,您可以通过req
对象访问用户数据。