#passport.js #nestjs #fastify #nestjs-fastify
#passport.js #nestjs #ускоряет #nestjs-ускоряет
Вопрос:
Итак, я заменил ExpressJS на Fastify, но моя проблема в том, что Nest-Passport не поддерживает fastify, есть ли у нас альтернатива для Nest-Passport? или какие-либо решения о том, как защитить RestAPI в NestJS с помощью токена?
Ответ №1:
Я не знаю, правильно ли это. Но если я изменю jwt-экстрактор по умолчанию
ExtractJwt.fromAuthHeaderAsBearerToken
(описано в документе) с помощью пользовательского он работает.
const fromFastifyAuthHeaderAsBearerToken = (request: FastifyRequest): string => {
const auth = request.headers['authorization'];
const token = auth?.split(' ')[1];
return token;
}
Комментарии:
1. Это была бы правильная ссылка github.com/mikenicholson /…
2. Вы также можете использовать его как в коде, подобном стратегии JWT
jwtFromRequest: (request: fastify.FastifyRequest) => { console.log('As it is if not signed', request?.cookies?.Authentication); console.log('After unsigning the cookie', request?.unsignCookie(request.cookies?.Authentication)); }
Ответ №2:
Насколько мне известно, нет немедленного пакета аутентификации Fastify NestJJS (я уверен, что там что-то есть), но у меня есть образец аутентификации JWT с помощью Fastify и NestJS без паспорта. Идея состоит в том, чтобы использовать @nestjs/jwt
пакет Nest или просто jsonwebtoken
напрямую и создавать токены аутентификации с этим вместо делегирования в Passport. На самом деле это тот подход, который я предпочитаю, поскольку иногда я нахожу Passport слишком мистическим.