Я использую паспорт js для проверки пользователей. Вот моя стратегия.
passport.use(
new Strategy(opts, async ( payload , done) => {
try {
let user = await User.findById(payload.id);
if (!user) throw new Error("User not found");
if (user.role !== payload.role) throw new Error("Hacker");
return done(null, user.getUserInfo());
} catch (e) {
console.info(e);
done(null, false);
}
})
);
И если все в порядке, я возвращаю user.getUserInfo (). Вот мой маршрут:
router.get("url", passport.authenticate("jwt", { session: false }), async (req, res) => {
try {
} catch (e) {
console.info(e);
}
});
И теперь, когда пользователь передает валидатор, как я могу получить эти данные из оператора return done (), или получить данные оттуда нереально. Я новичок в node js, поэтому не знаю, как это сделать, или реально ли брать данные из Passport.authenticate ()?





В маршрутах:
{session: true}
а внутри req.user вы получите пользовательские данные.
В противном случае обходным решением может быть установка пользовательских данных в запросе непосредственно перед функцией обратного вызова Выполнено.
req.userData = user.getUserInfo();