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
'Node.js' 카테고리의 다른 글
[Node.js] 노드제이에스 - 토큰을 활용해 인증하기 (0) | 2024.02.14 |
---|---|
[Node.js] 노드제이에스 - 쿠키와 세션 (0) | 2024.02.14 |
[Node.js] 노드제이에스 - 폼에서 라우트 처리 (0) | 2024.02.13 |
[Node.js] 노드제이에스 - 템플릿 엔진 (2) | 2024.02.13 |
[Node.js] 노드제이에스 - CRUD 코드 작성 (0) | 2024.02.10 |
댓글