익명게시판을 만들었으니, 이제 사용자를 만들어야함
다음 단계는 무조건 [사용자 관리와 인증/보안]
Phase 2 의존성때문에 무조건 순서 지켜야한다고함
- Users(사용자) 모듈 생성 👈 (오늘의 목표)
- 근거: 로그인 기능을 만들려면, 먼저 "아이디/비번"을 저장할 테이블이 있어야 합니다.
- 비밀번호 암호화 (Bcrypt)
- 근거: DB 관리자도 회원의 비밀번호를 알면 안 됩니다. 법적으로 필수입니다.
- 인증 모듈 (Auth & JWT)
- 근거: 매번 아이디/비번을 칠 수 없으니, "로그인 증명서(토큰)"를 발급해줘야 합니다.
- 보안관 배치 (Guards)
- 근거: 토큰 없는 사람이 글을 쓰거나 지우려고 하면 서버가 막아야 합니다.
- 관계 연결 (Relation)
- 근거: "이 글은 2번 유저가 썼어"라고 게시글(Post)과 유저(User)를 연결합니다.
Step 1. Users(사용자) 리소스 만들기
가장 먼저 회원을 담을 그릇부터 만듭시다. Posts 때처럼 하나하나 파일을 만들어도 되지만,
실무에선 CLI(명령어)로 1초 만에 만듭니다.
개쩐다 1초래
2. 사용자 설계도(Entity) 작성
3. 회원가입 규칙(DTO) 정하기

유저 테이블생성~
다음 가자~
---
단방향 암호화(Hashing)
중요한 건, 개발자인 우리도 이 암호를 다시 "1234"로 되돌릴 수 없습니다. (그래서 비번 까먹으면 '찾기'가 아니라 '재설정'만 가능
오 그렇구나 그래서 비밀번호 까먹으면 알려주는게아니라, 재설정하는거구나 처음알았네
이 기술을 적용해 봅시다. **Node.js의 표준, bcrypt**를 설치
1단계: 암호화 도구 설치 (터미널)
- bcrypt: 암호화 핵심 라이브러리
- @types/bcrypt: 타입스크립트가 bcrypt를 알아먹게 해주는 번역기
2단계: 모듈 연결하기 (users.module.ts)
UsersService에서 DB를 쓰려면, 먼저 모듈에서 "우리 User 테이블 쓸 거야!" 라고 등록해줘야 합니다.
3단계: 회원가입 로직 만들기 (users.service.ts)
[코드의 핵심 로직]
- 중복 검사: 이미 가입된 이메일인지 확인합니다.
- 암호화: bcrypt.hash(비밀번호, 10)으로 비밀번호를 뭉개버립니다.
- 저장: 뭉개진 비밀번호를 DB에 넣습니다.
선생님의 확인 과제 (Test)
과제확인에서 개털리는 중 안됨 오류오류
한 3번정도 안된다고 오류메시지 주다가 하니까 됨

그럼 이제 다음은 제이슨이다.
이제 **[회원가입]**이라는 큰 산을 넘었습니다. 다음은 **[로그인]**입니다.
지금은 아이디/비번을 DB에 넣기만 했지, "나 로그인 했어!" 라고 증명할 방법이 없습니다. 그래서 JWT(Json Web Token) 라는 **"출입증 발급기"**를 만들어야 합니다.
준비되셨으면 "출입증 만들러 가자!"라고 외쳐주세요. NestJS 인증(Auth)의 꽃, JWT 세팅을 시작해 봅시다.
좋습니다! "출입증(JWT)" 발급소를 차려봅시다.
이 과정은 "손님이 오면 -> 명단(DB)에 있는지 확인하고 -> 비밀번호 맞으면 -> 도장 꽝 찍어서 출입증(Token)을 준다" 는 흐름입니다.
---
진짜 말투 어떻게하지 얘...
그래도 이해는 잘되네...!
1단계: 재료(라이브러리) 사오기
NestJS에서 인증을 하려면 passport와 jwt라는 도구가 필요합니다. 터미널을 열고(서버 끄고) 아래 명령어를 한 줄씩 입력하세요.
(참고: passport-local 등은 나중에 필요하면 깔고, 지금은 가장 핵심인 JWT만 먼저 갑니다!)
2단계: 발급소(Auth 모듈) 건설하기
터미널에서 명령어로 파일을 3개 만듭니다.
3단계: 배선 연결하기 (auth.module.ts)
발급소(AuthModule)가 돌아가려면 두 가지가 필요합니다.
- 회원 명부: UsersModule (아까 만든 거)
- 도장: JwtModule (토큰 만드는 기계)
4단계: 발급 로직 만들기 (auth.service.ts)
여기가 핵심 엔진입니다.
- 로그인(login): 이메일/비번을 받아서 검사합니다.
- 검증: 아까 만든 bcrypt로 비밀번호가 맞는지 비교합니다.
- 발급: 맞으면 토큰(Access Token)을 줍니다.
5단계: 창구 열기 (auth.controller.ts)
마지막으로 손님이 올 수 있는 창구(URL)를 만듭니다.
선생님의 중간 점검
자, 이제 로그인 기능이 완성되었습니다. 서버를 켜고(npm run start:dev) Swagger를 확인해 봅시다.
- 회원가입: 아까 만든 test@email.com / password1234 계정이 있죠? (없으면 하나 만드세요)
- 로그인 시도:
- Swagger에서 POST /auth/login 을 찾으세요.
- Try it out 클릭.
- Body에 아래 내용을 넣고 Execute!
---
하라해서 하려니까 파라미터가 없다는 오류나옴 이새기뭐임?
---
1단계: 로그인 전용 DTO 만들기
src/auth/dto/login.dto.ts 파일을 새로 만들고, 아래 코드를 복사해서 붙여넣으세요. (중요한 건 @ApiProperty입니다. 이게 있어야 Swagger에 입력창이 생깁니다!)
2단계: 컨트롤러에 DTO 끼워 넣기
이제 방금 만든 DTO를 컨트롤러에 연결해 줍니다. src/auth/auth.controller.ts 파일을 열어서 signIn 함수 부분을 아래처럼 수정하세요.

예~~~~~~~~
'nodejs' 카테고리의 다른 글
| 제미나이를 이용한 모르는 기술스택으로 Blog만들기(6) (0) | 2026.01.29 |
|---|---|
| 제미나이를 이용한 모르는 기술스택으로 Blog만들기(5) (0) | 2026.01.27 |
| 제미나이를 이용한 모르는 기술스택으로 Blog만들기(3) (1) | 2026.01.15 |
| 제미나이를 이용한 모르는 기술스택으로 Blog만들기(2) (0) | 2026.01.14 |
| 제미나이를 이용한 모르는 기술스택으로 Blog만들기(1) (0) | 2026.01.13 |