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, который обычно является записью базы данных пользователя.

Вы можете использовать эту информацию, чтобы ограничить другие запросы к базе данных / проверки / и т.д., чтобы убедиться, что вошедший в систему пользователь имеет доступ к определенной информации.

Другие вопросы по тегам