【发布时间】:2018-01-28 00:40:17
【问题描述】:
我正在尝试重构我现有的应用程序以添加对 PassportJS 的支持,但它变得比预期的要困难。
我使用 passport-jwt 作为策略。所以我有
passport.use(new JwtStrategy(options, user.verify));
router.post(
'/login/jwt',
passport.authenticate('jwt', {session: false, failWithError: true})
);
如果 user.verify 失败,它会调用(例如)
done(new Error(errors.BAD_REQUEST));
但是我无法处理这个错误,无论我作为 done 回调的第一个参数传递什么,Passport 总是发送 401 - Unauthorized 响应。
这不是我所期望的,因为我的代码库中有许多错误处理程序,我想向客户端传达一个有意义的错误。
到目前为止,我在 Google 上搜索了很多,除了 official documentation 之外,我还打开了几个 SO 问题,但这些解决方案中的任何一个都可以解决我的问题。
例如,这个问题的一个常见解决方案是使用闭包来访问 req 和 res 对象(如上面的链接),但这不适用于我现有的应用程序。
有人可以帮我吗?
【问题讨论】:
标签: javascript node.js jwt passport.js