Гарантируется ли, что req.user является действительным пользователем, прошедшим проверку подлинности? [passport.js ]

#node.js #authentication #oauth-2.0 #passport.js #express-session

#node.js #аутентификация #oauth-2.0 #passport.js #экспресс-сессия

Вопрос:

Я хочу проверить, есть ли у конкретного пользователя разрешения, которых нет у других пользователей.

Предполагая, что у меня есть список идентификаторов пользователей, имеющих это конкретное разрешение, можно ли просто сравнить req.user.id к идентификаторам в списке и, если есть совпадение, предоставить им разрешение? Может ли кто-нибудь отправить запрос и просто ввести идентификатор другого пользователя?

Я использую discord oauth2 с passport, passport-discord и express-session для аутентификации.

Ответ №1:

Это зависит от вашей реализации passportjs. Если это безопасно (т. Е. С Использованием подписанных токенов JWT и ваш секрет не просочился), кто-то не сможет подделать другой идентификатор, и вы можете доверять req.user.id !

Комментарии:

1. Я не использую JWT, я использую express-session с файлом cookie с идентификатором сеанса, который также хранится в базе данных хранилища сеансов. Я сохраняю пользователей (с идентификатором) в своей базе данных и получаю пользователя по его req.user.id оттуда при десериализации. Это безопасно?

2. Да, если он правильно реализован, он безопасен!