본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
🔥누적 수강 9백만 시간 돌파 기념 100% 페이백 (03.22 - 03.27) | 패스트캠퍼스
단 6일 한정! 지금 수강 시작하면 수강료 100% 돌려드려요!
fastcampus.co.kr
0325 화
학습 내용 정리
nestjs
Auth Module 회원가입 작업
학습후기
NestJS 회원가입(Auth Module) 기능 구현
오늘은 NestJS에서 Auth Module을 이용한 회원가입 기능 구현에 도전했다. bcrypt를 활용하여 비밀번호를 해싱하는 과정에서 시간을 거의 2시간 가까이 허비했다. bcrypt 설치 시 node-gyp 관련 오류가 발생했는데, 아무리 구글링을 해도 해결이 되지 않았다. bcrypt와 node 버전 충돌 문제일 수도 있다고 생각해서 버전도 바꿔보고, bcryptjs로 대체도 시도해봤지만 결국 해결하지 못했다. 원인을 정확히 모르니 더 답답하고 우울했다. 에러 메시지도 명확하지 않아서 시간을 많이 낭비한 느낌이다. 개발을 하다 보면 이런 시행착오도 성장의 과정이겠지만, 오늘은 꽤 지치는 하루였다.
그럼에도 불구하고, 회원가입 기능의 큰 틀은 구현해볼 수 있었다. 오늘 작성한 주요 코드는 AuthService 내 register 메서드다. 먼저 프론트엔드에서 Authorization 헤더를 통해 전달받는 Basic 토큰을 파싱하는 메서드 parseBasicToken을 구현했다. 이 메서드는 "Basic base64Encoded" 형태의 토큰을 받아 base64 디코딩 후, 이메일과 비밀번호를 분리하여 반환한다. 그리고 register 메서드에서는 해당 이메일로 기존 회원을 조회해 중복 여부를 확인하고, 비밀번호를 해싱한 뒤 DB에 저장하는 방식으로 회원가입 로직을 완성했다.
코드 내에서는 @InjectRepository(User)를 통해 User 엔티티를 주입받아 DB 작업을 처리하고 있고, ConfigService를 통해 해시 라운드 수(HASH_ROUNDS)를 .env 파일에서 불러오도록 구성했다. 이런 구조는 NestJS의 의존성 주입과 설정 관리 측면에서 상당히 직관적이고 강력하다는 느낌을 받았다. 특히 @nestjs/config를 통해 환경변수를 관리하는 방식은 기존에 직접 dotenv를 불러와 쓰던 방식보다 훨씬 깔끔하고 유지보수가 좋을 것 같다.
비록 bcrypt 설치 이슈로 인해 작업 속도가 느려졌지만, 전체적인 회원가입 기능을 직접 작성해보며 NestJS의 구조적인 장점과 실전에서 어떻게 사용되는지를 몸소 체감할 수 있는 좋은 시간이 됐다. 내일은 bcrypt 문제를 꼭 해결해보고 싶고, 이후 로그인 기능까지 구현해보는 게 목표다. 또한 추후에는 JWT를 활용한 인증/인가도 직접 구현해보며 실력을 더 쌓아가고 싶다. 오늘은 오류와의 싸움으로 인해 많이 지쳤지만, 하나씩 배우는 즐거움을 놓치지 않도록 계속해서 노력할 예정이다.
사진



