Passportjs извлекает пользователя из функции isAuthenticated
Хорошо, так что я установил полную локальную авторизацию для паспорта, все работает отлично, за исключением того, что я не могу решить одну проблему с помощью passport.js.
Я авторизую пользователей с помощью сеансов (они работают нормально), однако я не могу извлечь информацию о пользователе из этого сеанса, хотя, если я вручную проверяю свою базу данных сеансов, для каждого сеанса есть идентификатор пользователя (который ссылается на пользователя), Также функции десериализации, кажется, возвращают пользователя, и журнал показывает правильного пользователя.
Теперь проблема в том, что я не могу передать информацию о сеансе пользователя<->где-либо на моих маршрутах. Проблема, с которой я, похоже, сталкиваюсь, заключается в том, что люди, которые вошли в систему, авторизованы, но они могут манипулировать телом запроса сколько угодно, делая такие вещи, как отправка сообщений от их имени, выход их из системы,...
Пример кода:
router.post('/games/:id/verify', isAuthenticated, function(req, res){
log('@POST verify for game with id: ' + req.params.id);
gameController.postVerify(req.params.id, req, res);
});
В этом коде он просто проверяет, вошел ли пользователь в систему, если возможно, я хочу проверить, какой пользователь вошел в эту сессию, чтобы он не мог проверить эту игру, если он не был ее частью.
Допустим, пользователи A, B были частью игры и должны это проверить. Эта функция позволяет пользователю C, вошедшему в систему, проверять их наличие, поскольку эта функция только проверяет, вошел ли пользователь в систему.
Если я смогу передать зарегистрированного пользователя (пользователь C в тестовом примере) в gameController, я могу написать свои собственные проверки и выбросить их.
1 ответ
Паспорт будет заполняться req.user
когда аутентификация прошла успешно. Он будет заполнен данными, предоставленными deserializeUser
, который обычно является записью базы данных пользователя.
Вы можете использовать эту информацию, чтобы ограничить другие запросы к базе данных / проверки / и т.д., чтобы убедиться, что вошедший в систему пользователь имеет доступ к определенной информации.