[TIL] 24.03.12

sssujijjl·2024년 3월 12일

[TIL]

목록 보기
49/51

[문제]

  • auth.module에 jwt.strategy와 admin.strategy 두 가지를 만들어 각각 검증하기

먼저 각각의 JwtStrategy와 adminStrategy 생성해주기

export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {

export class AdminStrategy extends PassportStrategy(Strategy, 'admin') {

그리고 각각 이름도 설정해주었다!

@Module({
  imports: [
    PassportModule.register({ defaultStrategy: 'jwt', session: false }),
    JwtModule.registerAsync({
      useFactory: (config: ConfigService) => ({
        secret: config.get<string>('JWT_SECRET_KEY'),
      }),
      inject: [ConfigService],
    }),
    UserModule,
  ],
  providers: [JwtStrategy, AdminStrategy],
})
export class AuthModule {}

auth.module에 providers에 추가해 준 후,

  @UseGuards(AuthGuard('jwt'))
  @Get()
  async getEmail(@UserInfo() user: User) {
    const point = await this.userService.point(user.id);

    return { user, point };
  }

AuthGuard뒤에 각각 설정한 이름을 넣어주면 해당하는 Strategy를 호출하여 검증해준다!

처음에는 이름 지정하지 않고 jwt를 사용하여 API를 호출했을 때는 두 가지 다 검증을 해서
각각 필요한 guard를 검증할 수 있도록 엄청 많이 시도했다..

export 해주고 @UseGuards(JwtStrategy) 라고 작성을 했을 때는
아예 JwtStrategy를 호출하지 못하였다..

그래도 이름을 지정해준 후 API를 호출하니 각각 실행이 된다!!!!!!!

0개의 댓글