import{ Injectable, UnauthorizedException }from'@nestjs/common';import{ PassportStrategy }from'@nestjs/passport';import{ ExtractJwt, Strategy }from'passport-jwt';import{ InjectRepository }from'@nestjs/typeorm';import{ UserRepository }from'./user.repository';import{ User }from'./user.entity';// 전략 사용은 일반 passport가 아니라 passport-jwt로 사용 @Injectable()// 다른곳에서도 주입을 하기 위해 사용 exportclassJwtStrategyextendsPassportStrategy(Strategy){constructor(@InjectRepository(UserRepository)private userRepository: UserRepository,){super({ secretOrKey:'Secret1234',// 토큰을 유효한지 체크할 때 사용하는 Secret Key임 jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),// jwt를 Header에서 Bearer를 통해 가져오는 것으로 확인 });}asyncvalidate(payload){const{ username }= payload;const user: User =awaitthis.userRepository.findOne({ where:{ username }});if(!User){thrownewUnauthorizedException();}return user;}}