백엔드-노드

노드 실전

강사: 오백엔드 · 작성자: 이종춘 · 작성일: 2026-07-08 17:38:10 · 조회수: 4

16강. 회원가입과 로그인 만들기
목록으로
16강. 회원가입과 로그인 만들기

이번 강의에서는 Express + MySQL을 이용한 회원가입과 로그인 기능을 구현합니다.

목표: 회원 정보를 데이터베이스에 저장하고, 아이디와 비밀번호를 확인하여 로그인 기능을 구현할 수 있습니다.

1. 로그인 시스템 구조
사용자



회원가입



MySQL 저장



로그인



아이디 확인



비밀번호 확인



로그인 성공

2. 회원 테이블 만들기

MySQL에서 실행

CREATE TABLE member(

id INT AUTO_INCREMENT PRIMARY KEY,

userid VARCHAR(50) UNIQUE,

password VARCHAR(255),

name VARCHAR(100),

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

3. 프로젝트 구조
project

├── app.js
├── config
│ db.js

├── routes
│ member.js

├── controllers
│ memberController.js

├── models
│ memberModel.js

└── views

4. JSON 처리
const express = require("express");

const app = express();

app.use(express.json());

5. 회원가입 API
app.post("/join",(req,res)=>{

const{

userid,

password,

name

} = req.body;

const sql =

"INSERT INTO member(userid,password,name) VALUES(?,?,?)";

db.query(

sql,

[

userid,

password,

name

],

(err,result)=>{

if(err){

return res.status(500).send(err);

}

res.send("회원가입 완료");

}

);

});

6. 회원가입 요청
POST /join
{
"userid":"admin",
"password":"1234",
"name":"커사맨"
}

7. 로그인 API
app.post("/login",(req,res)=>{

const{

userid,

password

} = req.body;

const sql =

"SELECT * FROM member WHERE userid=?";

db.query(

sql,

[

userid

],

(err,result)=>{

if(err){

return res.status(500).send(err);

}

if(result.length===0){

return res.send("아이디 없음");

}

if(result[0].password!==password){

return res.send("비밀번호 오류");

}

res.send("로그인 성공");

}

);

});

8. 로그인 요청
POST /login
{
"userid":"admin",
"password":"1234"
}

응답

로그인 성공

9. 회원 목록
app.get("/member",(req,res)=>{

const sql =

"SELECT id,userid,name,created_at FROM member";

db.query(sql,(err,result)=>{

res.json(result);

});

});

10. 회원 상세보기
app.get("/member/:id",(req,res)=>{

const sql =

"SELECT id,userid,name FROM member WHERE id=?";

db.query(

sql,

[

req.params.id

],

(err,result)=>{

res.json(result);

}

);

});

11. 회원정보 수정
app.put("/member/:id",(req,res)=>{

const{

name

} = req.body;

const sql =

"UPDATE member SET name=? WHERE id=?";

db.query(

sql,

[

name,

req.params.id

],

()=>{

res.send("수정 완료");

}

);

});

12. 회원 삭제
app.delete("/member/:id",(req,res)=>{

const sql =

"DELETE FROM member WHERE id=?";

db.query(

sql,

[

req.params.id

],

()=>{

res.send("삭제 완료");

}

);

});

13. REST API 구조
Method URL 기능
POST /join 회원가입
POST /login 로그인
GET /member 회원목록
GET /member/:id 회원조회
PUT /member/:id 회원수정
DELETE /member/:id 회원삭제

14. 로그인 흐름
아이디 입력



SELECT



아이디 존재



비밀번호 비교



로그인 성공

15. 실습 1

회원가입

POST

/join

16. 실습 2

로그인

POST

/login

17. 실습 3

회원목록

GET

/member

18. 실습 4

회원삭제

DELETE

/member/1

19. 비밀번호 보안

현재 예제는 학습용입니다.

실제 서비스에서는 비밀번호를 그대로 저장하지 않습니다.

예를 들어

1234

처럼 저장하는 대신

$2b$10$X7h2...

처럼 암호화(해시)해서 저장합니다.

Node.js에서는 일반적으로 bcrypt 패키지를 사용합니다.

npm install bcrypt

비밀번호 저장 예시

const bcrypt = require("bcrypt");

const hash = await bcrypt.hash(password, 10);

로그인 시 비교

const isMatch = await bcrypt.compare(password, hash);

20. 이번 강의 핵심 정리
기능 Method SQL
회원가입 POST INSERT
로그인 POST SELECT
회원조회 GET SELECT
회원수정 PUT UPDATE
회원삭제 DELETE DELETE

Express 메서드

함수 설명
app.post() 회원가입, 로그인
app.get() 회원 조회
app.put() 회원 수정
app.delete() 회원 삭제
db.query() SQL 실행
실무 팁

실무에서는 로그인 기능을 다음과 같이 구성하는 경우가 많습니다.

비밀번호 암호화: bcrypt
로그인 상태 유지: 세션(Session) 또는 JWT(JSON Web Token)
환경 변수 관리: dotenv
입력값 검증: 아이디 중복, 비밀번호 길이, 이메일 형식 등

즉, 이번 강의는 로그인 시스템의 기본 구조를 이해하는 단계이며, 다음 강의에서 세션(Session)을 적용하면 로그인 상태를 유지하는 기능까지 구현할 수 있습니다.

실습 미션

다음 기능을 구현해 보세요.

✅ 회원가입
✅ 로그인
✅ 회원목록 조회
✅ 회원 상세조회
✅ 회원정보 수정
✅ 회원 삭제
✅ 아이디 중복 검사 추가
✅ bcrypt를 사용하여 비밀번호 암호화 적용
#16강. 회원가입과 로그인 만들기

첨부 파일

0개
첨부된 파일이 없습니다.

댓글 / 답글

0개
댓글을 작성하려면 로그인하세요.
아직 댓글이 없습니다.