我认为自定义回调是一种选择。它作为最后一个参数传递给authenticate(strategy, options, callback)
方法,它将允许您设置您希望的行为。
您的代码将如下所示:
app.get('/get/items', (req, res, next) => {
passport.authenticate('jwt', { session: false }, (err, user, info) => {
if (!user) {
/*
Unauthorized accees.
Handle here the request as u wish
*/
/* Do some custom logic and return your desired result */
return res.status(401).json({ success: false, message: 'Unauthorized access!' });
}
/* User is authorized. Do other stuff here and return your desired result*/
return res.status(200).json({ success: true, message: 'Congratulations!' });
})(req, res, next);
});
在此示例中,请注意从路由处理程序中调用 authenticate(),而不是用作路由中间件。这使回调通过闭包访问 req 和 res 对象。
如果身份验证失败,用户将被设置为 false。如果发生异常,将设置 err。将传递一个可选的 info 参数,其中包含策略的验证回调提供的其他详细信息。
回调可以根据需要使用提供的参数来处理身份验证结果。请注意,当使用自定义回调时,应用程序负责建立会话(通过调用 req.login())并发送响应。
资源