由于该函数没有返回值 - 我如何确定导致该函数失败的原因。我有以下代码:
function test(req : IncomingMessage, res :ServerResponse, next:(err:any)=>void) {
passport.authenticate('google', {scope:['https://www.googleapis.com/auth/userinfo.email']})(req, res,next);
//how do I get details here
}
我的意思是我知道它失败了,因为没有调用队列中的下一个处理程序,但是我如何获得更详细的信息?
该函数的实例如下:
export const usersRouter = express
.Router()
.post('/googleLogin', test, async (req, res) => {
const user: User = req.user;
if (!user) {
res.send(401);
}
// const token = getJwtToken(user._id.toHexString());
// res.send({ token });
})
也许使用自定义回调。 (从文档中。 http://www.passportjs.org/docs/authenticate/)
在此示例中,请注意,authenticate() 是从路由处理程序内部调用的,而不是用作路由中间件。这使得回调可以通过闭包访问 req 和 res 对象。
app.get('/googleLogin', function(req, res, next) {
passport.authenticate('google', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)