Есть проблема с JWT стратегией. Вот код:
import { Injectable, UnauthorizedException } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PassportStrategy } from '@nestjs/passport';
import { Strategy, ExtractJwt } from 'passport-jwt';
import { EnvironmentVariables } from '@/config/env-schema';
import { AuthService, JWTPayload } from '@/api/auth/auth.service';
@Injectable()
export class JWTStrategy extends PassportStrategy(Strategy, 'jwt') {
constructor(
private readonly configService: ConfigService<EnvironmentVariables>,
// private readonly authService: AuthService,
) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: configService.get('APP_ENV') !== 'production',
secretOrKey: configService.get('JWT_SECRET'),
});
}
async validate(payload: JWTPayload) {
console.log('validate(payload):', payload);
// const user = await this.authService.getUserById(payload.id);
// if (user === undefined) {
// throw new UnauthorizedException();
// }
return payload;
}
}
Так всё работает. Но если раскомментировать строчки, чтобы сходить в БД, то в консоли ошибка:
Error: Unknown authentication strategy "jwt"
Хз что делать ))
Код auth.module.ts
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { PassportModule } from '@nestjs/passport';
import { TypeOrmModule } from '@nestjs/typeorm';
import { getJWTConfig } from '@/config/jwt.config';
import { JWTStrategy } from '@/common/strategies';
import { UserEntity } from '@/api/user/user.entity';
import { UserService } from '@/api/user/user.service';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
@Module({
imports: [
TypeOrmModule.forFeature([UserEntity]),
ConfigModule,
PassportModule.register({
defaultStrategy: 'jwt',
}),
JwtModule.registerAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: getJWTConfig,
}),
],
providers: [AuthService, JWTStrategy, ConfigService, UserService],
controllers: [AuthController],
exports: [],
})
export class AuthModule {}