JiYoung Dev πŸ–₯

[Node.js] μΏ ν‚€/μ„Έμ…˜ (2023.07.06 ~ 07) λ³Έλ¬Έ

full stack/Back-End

[Node.js] μΏ ν‚€/μ„Έμ…˜ (2023.07.06 ~ 07)

Shinjio 2023. 7. 6. 13:48

쿠킀와 μ„Έμ…˜μ„ μ‚¬μš©ν•˜λŠ” 이유

→ HTTP의 νŠΉμ„± λ•Œλ¬Έ

 

 

데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•΄μ„œλŠ”(μš”μ²­, 응닡) 연결을 μœ μ§€λ˜μ–΄μ•Ό 함

그런데 μš”μ²­, 응닡이 λλ‚¬λŠ”λ°λ„ 계속 연결을 μœ μ§€ν•œλ‹€λŠ” 것은 계속 μžμ›μ„ μ“΄λ‹€λŠ” 것 → λΉ„νš¨μœ¨μ  

κ·Έλž˜μ„œ HTTPλŠ” λΉ„μ—°κ²°μ„±μ˜ νŠΉμ§•μ„ 가지고 있음

 

 

μ΄λ‘œμΈν•΄ νŒŒμƒλ˜λŠ” νŠΉμ§•μΈ λ¬΄μƒνƒœ(Stateless)

μš”μ²­κ³Ό 응닡이 λλ‚˜λŠ” μˆœκ°„ μ•Œκ³ μžˆμ—ˆλ˜ μ‚¬μš©μžμ˜ 데이터λ₯Ό 더이상 κΈ°μ–΅ν•˜μ§€ μ•ŠμŒ!

 

μ΄λŸ¬ν•œ 이유둜 μ‚¬μš©μžμ˜ μƒνƒœ 정보λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ 쿠킀와 μ„Έμ…˜μ΄ ν•„μš”ν•¨ 

 

μΏ ν‚€

μœ μ§€ν•΄μ•Όν•˜λŠ” μƒνƒœ 정보λ₯Ό 보관

ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €)에 μ €μž₯

λ§Œλ£ŒκΈ°κ°„μ΄ λ‚¨μ•„μžˆμœΌλ©΄ 컴퓨터λ₯Ό 끄더라도 데이터가 μ €μž₯λ˜μ–΄ 있음

 

 

생성은 μ„œλ²„μ—μ„œ, 보관은 ν΄λΌμ΄μ–ΈνŠΈ μͺ½μ—μ„œ μ§„ν–‰ν•˜λ―€λ‘œ 응닡할 λ•Œ μΏ ν‚€λ₯Ό ν¬ν•¨μ‹œμΌœ 응닡해야 함

μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈλ‘œ μ‘λ‹΅ν•˜λŠ” κ³Όμ •μ—μ„œ μΏ ν‚€ 데이터 λ…ΈμΆœλ  수 있음 => λ³΄μ•ˆμƒ μ€‘μš”ν•œ μž‘μ—…μ€ μ§„ν–‰ν•˜μ§€ μ•ŠμŒ

ex. νŒμ—…μ°½, μ‡Όν•‘λͺ° μž₯λ°”κ΅¬λ‹ˆμ—μ„œ ν™œμš©

 

 

μ„Έμ…˜ 

 

 

μ„Έμ…˜μ„ μ‚¬μš©ν•  λ•Œ μ„Έμ…˜ μΏ ν‚€λ₯Ό 같이 μ‚¬μš©ν•¨ 

μ„Έμ…˜μ—μ„œ μ‚¬μš©ν•˜λŠ” μΏ ν‚€λŠ” μ‚¬μš©μžμ˜ 정보가 담겨져 μžˆλŠ”κ²Œ μ•„λ‹ˆλΌ ν΄λΌμ΄μ–ΈνŠΈλ₯Ό ꡬ별할 수 μžˆλŠ” 값을 가지고 있음

μ„Έμ…˜μ€ μ‚¬μš©μžμ˜ 정보가 μ„œλ²„μ— μ €μž₯λ˜μ–΄ 있음

 

 

 

μΏ ν‚€ : μ‚¬μš©μžμ˜ PCκ°€ 꺼지더라도 μ €μž₯λ˜μ–΄ 있음

μ„Έμ…˜ : μ„œλ²„ λΆ€ν•˜κ°€ μžˆμ„ 수 있기 λ•Œλ¬Έμ— λΈŒλΌμš°μ €λ₯Ό 끄면 μ‚­μ œλ¨ 

 

μ„Έμ…˜ μ‚¬μš© 방법

express-session μ„€μΉ˜ν•΄μ•Ό μ‚¬μš©ν•  수 있음 

 

 

μΏ ν‚€ 생성

res.cookie(key, value, {

    maxAgeν˜Ήμ€expires,

    signed

}

 

μ„œλͺ… μ‚¬μš©μ‹œ app에 cookieParser μ„€μ • ν•„μš”

 

μΏ ν‚€ κ°’ 확인

req.cookie

 

μΏ ν‚€ μ‚­μ œ 

res.clearCookie

 

μ„Έμ…˜ μ‚¬μš©

μ„Έμ…˜μ„ μ‚¬μš©ν•˜λ €λ©΄ μ‚¬μš©ν•˜κΈ° 전에 express-session μ„€μΉ˜ 및 app.jsμ—μ„œ session 정보 μ„€μ • ν•„μš” 

 

app.use(
  //μ•„λž˜ session λΌμš°ν„° μ‚¬μš©ν•˜κΈ° 전에 μ •μ˜ ν•„μš”
  session({
    httpOnly: true, //http 톡신할 λ•Œλ§Œ ν—ˆμš©
    secret: "secretkey", //μ•”ν˜Έν™” ν‚€ μ„€μ •
    resave: false, //μ„Έμ…˜μ— μˆ˜μ •μ‚¬ν•­μ΄ 없더라도 λ‹€μ‹œ μ €μž₯할것인지에 λŒ€ν•œ μ„€μ •
    //μ„Έμ…˜ μ‚¬μš©μ‹œ μ‚¬μš©ν•  쿠킀에 λŒ€ν•œ μ„€μ •
    cookie: {
      httpOnly: true,
    },
  })
); //express-session μ‚¬μš©

 

μ„Έμ…˜ 생성/κ°’ 확인

req.session.ν‚€κ°’ = "value"

 

μ„Έμ…˜ μ‚­μ œ 

req.session.destroy()

 

μ„Έμ…˜μ„ μ €μž₯ν•  수 μžˆλŠ” μŠ€ν† λ¦¬μ§€

npm install session-file-store

 

 

ν΄λΌμ΄μ–ΈνŠΈλ‹Ή 계속 생성

μ—¬λŸ¬λͺ…μ˜ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ„Έμ…˜κ°’μ„ μ €μž₯ν•  λ•Œ μ‚¬μš©