본문 바로가기
전공수업/웹서버프로그래밍(Node.js)

[Express] 미들웨어 #2 body-parser, cookie-parser, express-session

by JooRi 2024. 6. 15.
728x90
반응형
SMALL

 

body-parser

요청의 본문을 해석해서 req.body 객체로 만들어주는 미들웨어로, 주로 폼 데이터나 AJAX 요청의 데이터를 처리한다.

멀티파트(이미지, 동영상, 파일) 데이터는 처리하지 못한다. 멀티파트 데이터 처리는 multer 패키지를 사용해야 한다.

 

body-parser 설치

 

// 본문이 버퍼 또는 텍스트 데이터일 때
const bodyParser = require('body-parser')
app.use(bodyParser.raw());
app.use(bodyParser.text());

 

익스프레스 4.16.0 버전부터 body-parser 미들웨어의 일부 기능이 내장되었으므로 따로 설치할 필요가 없지만,

Raw(버퍼데이터)나 Text 형식의 데이터를 해석해야 하면 body-parser를 설치하고 위 코드를 추가하면 된다.

 

 

app.js

- json: 요청 본문이 json인 경우 해석

- urlencoded: 폼 요청을 해석

- { extended: false }: false면 노드의 querystring 모듈을 사용하여 쿼리스트링 해석, true면 qs 모듈로 해석 

 

 

 

 

cookie parser

요청 헤더의 쿠키를 해석해 req.cookies 객체로 만드는 미들웨어이다.

 

app.js

해석된 쿠키들은 req.cookies 객체에 들어간다.

예를 들어 name=zerocho 쿠키를 보냈다면 req.cookies = { name: 'zerocho' }가 된다.

 

 

// 쿠키 암호화
app.use(cookieParser(비밀키));

 

쿠키를 암호화하려면 인수로 비밀키를 넣으면 된다. 

쿠키는 위조되기 쉬우므로 비밀키를 통해 만들어낸 서명을 쿠키 값 뒤에 붙인다.

서명된 쿠키는 req.signedCookies객체에 들어간다.

 

express-session

세션 관리용 미들웨어이다.

로그인 기능 등 세션을 구현하거나 특정 사용자들 위한 데이터를 임시 저장할 때 사용한다.

 

설치

express-generator에 내장되어 있지 않아 별도 설치가 필요하다.

 

 

app.js

- resave: 요청이 왔을 때 세션에 수정사항이 생기지 않아도 다시 저장할지 여부

- savaUninitialized: 세션에 저장할 내역이 없더라도 세션을 저장할지

- secret: 쿠키 암호화

- cookie: 세션 쿠키 암호화

- httpOnly: 클라이언트에서 쿠키를 확인하지 못하도록 하면 true

- secure: https 환경에서 사용하면 true

 

 

728x90
반응형
LIST

댓글