Я использую паспорт 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 (), или получить данные оттуда нереально.





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