Я пытаюсь настроить подтверждение по электронной почте с помощью 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, и я не могу понять, почему. Если я добавлю какие-либо журналы консоли в асинхронный обратный вызов для паспорта, ни один из них не будет вызван. Было бы здорово, если бы кто-то, кто делал аутентификацию раньше, мог бы помочь. Спасибо.