백엔드-노드

노드 실전

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

17강. Session을 이용한 로그인 상태 유지
목록으로
17강. Session을 이용한 로그인 상태 유지

이번 강의에서는 Express Session을 사용하여 로그인 상태를 유지하는 방법을 배웁니다.

목표: 로그인 후에도 사용자의 인증 상태를 유지하고, 로그인한 사용자만 접근 가능한 페이지를 만들 수 있습니다.

1. Session이란?

Session은 사용자의 로그인 정보를 서버에 저장하는 방식입니다.

동작 과정

사용자 로그인



아이디 / 비밀번호 확인



Session 생성



브라우저에 Session ID 전달



이후 요청마다 Session ID 전송



서버가 로그인 여부 확인



로그인 유지

2. Session 설치

터미널에서 설치합니다.

npm install express-session

또는

npm i express-session

3. Session 등록
const express = require("express");
const session = require("express-session");

const app = express();

app.use(express.json());

app.use(session({

secret:"node123",

resave:false,

saveUninitialized:false

}));

4. Session 옵션
옵션 설명
secret 세션 암호화 키
resave 변경이 없어도 저장 여부
saveUninitialized 빈 세션 저장 여부

실무에서는 secret을 .env 파일에서 관리합니다.

5. 로그인 성공 시 Session 저장
app.post("/login",(req,res)=>{

const { userid,password } = req.body;

const sql =

"SELECT * FROM member WHERE userid=?";

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

if(result.length===0){

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

}

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

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

}

req.session.user = {

id:result[0].id,

userid:result[0].userid,

name:result[0].name

};

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

});

});

6. Session 확인
app.get("/session",(req,res)=>{

res.json(req.session);

});

브라우저

http://localhost:3000/session

예시

{

"user":{

"id":1,

"userid":"admin",

"name":"커사맨"

}

}

7. 로그인 여부 확인
app.get("/mypage",(req,res)=>{

if(!req.session.user){

return res.send("로그인이 필요합니다.");

}

res.send(

`${req.session.user.name}님 환영합니다.`

);

});

8. 로그아웃
app.get("/logout",(req,res)=>{

req.session.destroy(()=>{

res.send("로그아웃 완료");

});

});

9. 로그인 전후 흐름
로그인 전



/mypage



로그인이 필요합니다.


-------------------------


로그인 후



/mypage



커사맨님 환영합니다.

10. 인증 미들웨어 만들기
function auth(req,res,next){

if(!req.session.user){

return res.status(401).send("로그인 필요");

}

next();

}

11. 인증 미들웨어 사용
app.get("/admin",auth,(req,res)=>{

res.send("관리자 페이지");

});

실행 순서

브라우저



auth()



Session 확인



통과



관리자 페이지

12. 로그인 사용자 정보
app.get("/profile",auth,(req,res)=>{

res.json(req.session.user);

});

결과

{

"id":1,

"userid":"admin",

"name":"커사맨"

}

13. 관리자 권한 확인
function adminCheck(req,res,next){

if(

req.session.user.userid !== "admin"

){

return res.send("접근 불가");

}

next();

}

사용

app.get(

"/admin",

auth,

adminCheck,

(req,res)=>{

res.send("관리자");

});

14. Session 흐름
회원가입



로그인



Session 생성



페이지 이동



Session 확인



로그인 유지



로그아웃



Session 삭제

15. 실습 1

로그인

POST

/login

16. 실습 2

마이페이지

GET

/mypage

17. 실습 3

Session 확인

GET

/session

18. 실습 4

로그아웃

GET

/logout

19. 실무 프로젝트 구조
project

├── app.js

├── config

├── middleware
│ auth.js
│ admin.js

├── routes

├── controllers

├── models

├── public

└── views

실무에서는 인증 미들웨어를 middleware 폴더로 분리하여 관리합니다.

20. 이번 강의 핵심 정리
기능 설명
express-session 세션 관리
req.session 세션 객체
req.session.user 로그인 사용자 정보
req.session.destroy() 로그아웃
auth() 로그인 검사
adminCheck() 관리자 권한 검사
실무 팁

학습 단계에서는 MemoryStore(기본 세션 저장소)를 사용할 수 있지만, 실제 서비스에서는 기본 저장소를 사용하지 않습니다.

주로 사용하는 세션 저장소는 다음과 같습니다.

Redis: 가장 많이 사용되는 세션 저장소
MySQL: 데이터베이스 기반 저장
MongoDB: NoSQL 기반 저장

또한, 비밀번호는 반드시 bcrypt로 암호화하고, 세션 쿠키에는 httpOnly, secure, sameSite 등의 보안 옵션을 적용하는 것이 일반적입니다.

실습 미션

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

✅ 회원가입
✅ 로그인
✅ 세션 생성
✅ 로그인 여부 확인
✅ 마이페이지
✅ 관리자 페이지
✅ 로그아웃
✅ 인증 미들웨어(auth) 분리
#17강. Session을 이용한 로그인 상태 유지

첨부 파일

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

댓글 / 답글

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