일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스프링 폼
- SQL프로그래밍
- 스토어드 프로시저
- 이진탐색
- execute
- PS
- 비관적락
- 유니크제약조건
- eager
- FetchType
- 연결리스트
- exclusive lock
- JPQL
- shared lock
- 일대다
- 즉시로딩
- 다대다
- CHECK OPTION
- BOJ
- fetch
- 동적sql
- 연관관계
- 낙관적락
- 데코레이터
- 지연로딩
- 다대일
- 백트래킹
- dfs
- querydsl
- 힙
- Today
- Total
흰 스타렉스에서 내가 내리지
cookie-parser, express-session 미들웨어 본문
import cookieParser from "cookie-parser";
app.use(cookieParser(process.env.SECRET_KEY))
cookie-parser는 request에 첨부된 쿠키를 해석하여 req.cookies 객체로 만든다.
제공한 비밀 키를 통해 해당 쿠키가 내 서버가 만든 쿠키임을 검증할 수 있다.
쿠키는 클라이언트의 위조를 막기 위해 비밀키를 통해 만들어낸 sign을 쿠키 값 뒤에 붙인다.
서명된 쿠키는 req.cookies 대신 req.signedCookies 객체에 들어있다.
// cookie(key, value, option)
res.cookie('name', 'joos', {
expires: ##;
httpOnly: true,
secure: true,
signed: true,
})
signed 옵션에 true로 설정하면 쿠키 뒤에 서명이 붙는다.
내 서버의 쿠키임을 검증할 수 있으므로 보통 true로 설정하는 것이 좋다.
express-session
app.use(session({
resave: false,
saveUninitialized: false,
secret: process.env.SECRET_KEY,
cookie: {
httpOnly: true,
secure: false,
},
name: 'session-cookie',
}));
resave : 요청이 올 때, 세션에 수정 사항이 생기지 않더라도 세션을 다시 저장하는지
saveUninitialized : 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지
secret : express-session은 클라이언트에 세션쿠키를 보낸다. 안전하게 쿠키를 전송하려면 쿠키에 서명을 추가해야 하고, 서명하는데 secret key가 필요하다.
name : 세션 쿠키의 이름이다. 디폴트 값은 connect.sid이다.
cookie: 세션 쿠키에 대한 설정이다. maxAge, path, domain, expires, httpOnly...등등 일반적인 쿠키 옵션이 모두 제공된다.
httpOnly가 true이면 클라이언트에서 쿠키를 확인하지 못하고, secure가 false이면 https가 아닌 http에서도 사용할 수 있게 한다.
store 옵션:
메모리에 세션을 저장하도록 되어있는데, 이렇게 하면 서버를 재시작하면 메모리가 초기화되어 세션이 모두 사라진다.
따라서 배포할 때는 store에 db를 연결하여 세션을 유지하는 것이 좋다. 보통 redis가 쓰인다.
'Node.js' 카테고리의 다른 글
nunjucks 템플릿 연결하기 (0) | 2022.05.19 |
---|---|
multer 미들웨어 (0) | 2022.05.19 |
미들웨어 in 미들웨어 - 개발과 배포 분기처리 (0) | 2022.05.19 |
static, body-parser 미들웨어 (0) | 2022.05.19 |
다른 언어의 파일 실행하고 결과값 받아오기 (0) | 2022.05.17 |