본문 바로가기
Node.js

[Node.js] 노드제이에스 - cookie-parser 모듈

by Seong-Jun 2024. 2. 14.
728x90
반응형
SMALL

Do it! Node.js 프로그래밍 입문 10일차 입니다.

 

쿠키와 세션을 활용할 때 사용하는 모듈

npm install cookie-parser
npm install express-session connect-mongo


명령어로 모듈 설치

 

쿠키 연습

const express = require("express")
const cookieParser = require("cookie-parser")

const app = express()
app.use(cookieParser()) // cookie-parser을 미들웨어로 사용하겠다는 의미

app.get("/", (req, res) => {
    res.cookie("Kim", "1234", {httpOnly: true}) // res.cookie(name, value, option)
    res.send("쿠키생성")
})

app.get("/cookie", (req, res) => {
    console.log(req.cookies) // 쿠키를 요청 객체에 담아서 보냄
})

app.get("/delete-cookie", (req, res) => {
    res.clearCookie("Kim") // res.clearCookie(name) 유효 기간 전에도 쿠키를 삭제.
    res.send("쿠키삭제")
})

app.listen(5000, () => {
    console.log("서버 실행 중")
})

 

httpOnly 외의 옵션들

옵션 설명
domain 쿠키의 유효 도메인을 설정
path 쿠키의 유효 경로를 설정
expires 쿠키의 만료 날짜를 설정
maxAge 쿠키의 최대 수명을 밀리초 단위로 설정
secure 쿠키를 안전한 연결(https)에서만 전송되도록 설정
httpOnly true로 설정하면 http 통신에서만 쿠키가 설정되도록 제한

 

 

세션 연습

const express = require("express")
const session = require("express-session")
const MongoStore = require("connect-mongo")
require("dotenv").config()

const app = express()
app.use(session({ // 세션 등록
    secret: "secret code", // 세션 비밀 키
    resave: false, // 변경할 내용이 없으면 다시 저장하지 않음
    saveUninitialized: true, // 초기화되지 않은 세션 저장
    store: MongoStore.create({mongoUrl: process.env.DB_CONNECT}), // 몽고DB에 저장
    cookie: {maxAge: 60 * 60 * 24 * 1000} // 쿠키 유효 기간 24시간(밀리초 단위)
}))

app.get("/", (req, res) => {
    if(req.session.count) {
        req.session.count++
        res.send(`${req.session.count}번째 방문`)
    } else {
        req.session.count = 1
        res.send("첫 번째 방문")
    }
})

app.get("/session", (req, res) => {
    // req.session session객체
    // req.sessionID 세션ID
    // req.session.cookie 세션의 쿠키 정보
    res.send(`sessionID: ${req.sessionID}`)
})

app.get("/delete-session", (req, res) => {
    req.session.destroy((err) => { // 세션 정보 삭제
        if(err) {
            console.log(err)
        } else {
            res.clearCookie("connect.sid")
            res.send("세션삭제")
        }
    })
})

app.listen(5000, () => {
    console.log("서버 실행 중")
})

 

세션을 등록할 때 사용하는 주요 옵션

옵션 속성
name - 세션 식별자를 지정하는 쿠키 이름
- 기본값은 connect.sid
secret - 쿠키 변조를 막기 위해 사용하는 비밀 키
- 반드시 설정해야 하며 어떤 값을 사용해도 됨
store - 세션 데이터를 저장할 위치를 지정
- 메모리에 저장하는 것이 기본이지만 connect-mongo를 사용하면 몽고 DB에 저장할 수도 있습니다.
cookie - 세션 쿠키의 유효기간(maxAge)이나 http 연결에서만 사용하도록 (httpOnly) 지정할 수 있습니다.
resave - 세션에 변경 사항이 없을 때도 세션을 저장할 것인지 지정
- false로 지정하면 변경 사항이 있을 때만 세션을 다시 저장
saveUninitialized - 초기화되지 않은 세션을 저장할지 지정
- 일반적으로 true를 사용해서 초기화되지 않은 세션도 저장

 

728x90
반응형
LIST

댓글