我正在尝试使用Passport和passport-jwt策略设置电子邮件确认。我有一条看起来像这样的路线:
router.route('/confirmation/token=:token')
.post((req, res, next) => {
console.log(req.params)
next();
}, passport.authenticate('emailconfirm', {session: false}), usersController.confirmation)
然后我的护照策略如下:
passport.use(
"emailconfirm",
new JwtStrategy(
{
jwtFromRequest: ExtractJwt.fromUrlQueryParameter("token"),
secretOrKey: process.env.EMAIL_SECRET,
passReqToCallback: true
},
async (req, payload, done) => {
try {
const user = await User.findById(payload.sub);
if (!user) {
return done(null, false);
}
done(null, user);
} catch (error) {
done(error, false);
}
}
)
);
当用户注册时,将生成令牌,该令牌会在指向其电子邮件的链接中发送。用户单击链接,然后将其带到前端的确认路由,该路由会调用API。
我的问题是护照只是在退回401错误,而我却无法找出原因。如果我将任何控制台日志放在护照的异步回调中,都不会被调用。如果以前进行过身份验证的人可以帮助您,那将是很好的。谢谢。