/ / Локальна стратегія NodeJS Passport повідомляє клієнтського користувача authed - node.js, session-cookies, passport.js, passport-local

Локальна стратегія NodeJS Passport повідомляє користувача-клієнта authed - node.js, session-cookies, passport.js, passport-local

Я реалізував паспорт з паспортом-локальним і MongoDB, і він працює чудово.

Однак це єдина при завантаженні клієнтська сторонаapp і тому вузол не несе відповідальності за відображення html. Отже, в даний час я показую завантаження спінінгом на завантаження додатка та здійснює окремий дзвінок до api, щоб визначити, чи входить користувач, щоб умовно зробити якийсь матеріал:

router.get("/me", function (req, res) {
res.send(req.isAuthenticated() ? {} || 401);
});

Оскільки паспорт вже автентифікує мої маршрути та дзвінки deserializeUser це здається безглуздим - мені потрібен спосіб передачі додаткової інформації (у файлі cookie?), яка говорить про те, що користувач авторизується, я вгадуюсь deserializeUser?

server.use(session({secret: settings.sessionSecret}));
server.use(passport.initialize());
server.use(passport.session());

....

passport.use(new LocalStrategy(
localOpts,
function(email, password, done) {
User.findOne({
email: email,
activated: true
}, function (err, user) {
....
});
}
));

passport.serializeUser(function (user, done) {
done(null, user._id);
});

passport.deserializeUser(function (id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});

Зауважте, що два файли cookie, створені під час входу, успішні:

express:sess
express:sess.sig

Коли він виявляє наявність цих файлів cookie, то, здається, просто дзвонить deserializeUser отже, чому я думаю, що я можу поспілкуватися з клієнтом, у кого користувач авторизується там, чи іншим чином, щоб увійти всередину passport.use проміжне програмне забезпечення?

Відповіді:

0 для відповіді № 1

Виявляється, я можу просто додати проміжне програмне забезпечення після паспорта. Я був стурбований цим req.isAuthenticated створить інший запит до db, але він не "t:

server.use(function(req, res, next) {
res.cookie("isAuthenticated", req.isAuthenticated());
next();
});