포시코딩

[NestJS] Strategy, Guard 한 파일에 깔끔하게쓰기 본문

Node.js

[NestJS] Strategy, Guard 한 파일에 깔끔하게쓰기

포시 2024. 1. 30. 09:18
728x90
import { Injectable } from '@nestjs/common';
import { PassportStrategy, AuthGuard } from '@nestjs/passport';
import { BearerStrategy } from 'passport-azure-ad';
import { AzureUser } from './user';

const clientID = process.env.AAD_CLIENT_ID;
const tenantID = process.env.AAD_TENANT_ID;

@Injectable()
export class AzureADStrategy extends PassportStrategy(BearerStrategy, 'aad') {
  constructor() {
    super({
      identityMetadata: `https://login.microsoftonline.com/${ tenantID }/v2.0/.well-known/openid-configuration`,
      clientID
    });
  }

  async validate(data: AzureUser) {
    return data;
  }
}

export const AzureADGuard = AuthGuard('aad');
@Module({
  imports: [PassportModule],
  controllers: [AppController],
  providers: [AzureADStrategy]
})
export class AppModule {}

 

SSO 관련해서 서칭중에 위와 같은 코드를 발견했는데, 

그동안 something.strategy.ts, something.guard.ts 처럼 나눠 써왔던 걸 

어차피 OneToOne으로 사용하니 something.guard.ts 한 파일로 활용하면 좀 더 깔끔한 폴더구조가 되지 않을까 싶어 기록한다. 

 

물론 strategy는 따로 module에 providers로 등록해줘야하며 

두 파일로 나눠 작성하는 특별한 이유가 있을 수도 있다는 걸 생각하자

728x90