Я использую NestJS в качестве основы для клиентского API.В рамках мы используем довольно стандартную инфраструктуру аутентификации Passport / JWT, которая работает нормально.Наш AuthGuard запускается, когда токен-носитель найден, и в защищенных конечных точках API я могу внедрить HTTP-контекст через запрос @Res () и получить доступ к свойству request.user, которое содержит полезную нагрузку моего токена Jwt..
Кроме того, мы пытаемся реализовать RolesGuard очень похоже на пример кода, представленный в документации, и на некоторые примеры проектов на GitHub (ни один из которых на самом деле не использует эту защиту, ноони включают его в качестве образца защиты).
Наша проблема в том, что наш AuthGuard запускает и проверяет токен Jwt, а затем запускает наш RolesGuard, но передаваемый объект запроса не имеет пользовательских метаданных, прикрепленных кrequest.
Код ключа в нашем RolesGuard:
const request = context.switchToHttp().getRequest();
const user = request.user;
if (!user) {
return false;
}
В приведенном выше фрагменте пользователь всегда ложен.Кто-нибудь написал в Nest защиту на основе ролей / разрешений, которая успешно получает доступ к области действия текущего пользователя?Весь код стреляет, и все кажется зарегистрированным правильно.
-Кевин