일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- object
- 출처 : https://webdir.tistory.com/506
- toString
- 게시판
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- https://velog.io/@velopert/create-typescript-react-component
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- Today
- Total
Back Ground
Node - Express 미들웨어 express-session 본문
express-session
세션 관리용 미들웨어이다.
로그인 등의 이유로 세션을 구현할 때 매우 유용하다.
express-generator로는 설치되지 않으므로 다음과 같이 직접 설치해야 된다.
npm i express-session
설치 후 app.js에 express-session을 연결한다.
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ... var logger = require('morgan'); var session = require('express-session'); var indexRouter = require('./routes/index'); var usersRouter = require('./routes/users'); ... app.use(cookieParser('secret code')); app.use(session({ resave: false, saveUninitialized: false, secret: 'secret code', cookie: { httpOnly: true, secure: false, }, })); ... | cs |
express-session 1.5 버전 이전에는 내부적으로 cookie-parser를 사용하고 있어서
cookie-parser 미들웨어 보다 뒤에 위치해야 했지만,
1.5버전 이후부터 사용하지 않게 되어 순서가 상관 없어졌다.
그래도 현재 어떤 버전을 사용하고 있는지 모른다면 cookie-parser 미들웨어 뒤에 놓는 것이 안전하다.
express-session은 인자로 세션에 대한 설정을 받는다.
[ express-session 옵션들 ]
resave |
요청이 왔을 때 세션에 수정사항이 생기지 않더라도 세션을 다시 저장할지에 대한 설정 |
saveuninitialized |
세션에 저장할 내역이 없더라도 세션을 저장할지 대한 설정 (보통 방문자를 추적할 때 사용된다.) |
secret |
필수항목으로 cookie-parser의 비밀 키와 같은 역할을 한다 |
cookie |
세션 쿠키에 대한 설정 |
- express-session은 세션 관리 시 클라이언트에 쿠키를 보낸다.
이를 세션 쿠키 라고 부른다.
안전하게 쿠키를 전송하려면 쿠키에 서명을 추가해야 하고,
쿠키를 서명하는데 secret의 값이 필요하다.
cookie-parser의 secret과 같게 설정해야 한다.
[ cookie옵션 제공 종류 ]
- maxAge
- domain
- path
- expires
- sameSite
- httpOnly
- secure
등.. 일반적인 쿠키 옵션이 모두 제공된다.
현재 httpOnly를 사용해서 클라이언트에서 쿠키를 확인하지 못하도록 했고,
secure는 false로 해서 https가 아닌 환경에서도 사용 할 수 있게 했다.
배포 시에는 https를 적용하고 secure도 true로 설정하는 것이 좋다
- express session store옵션
예제 코드에는 없지만, store라는 옵션도 있다.
현재는 메모리에 세션을 저장하도록 되어 있다.
문제는 서버를 재 시작하면 메모리가 초기화 되어 세션이 모두 사라진다는 것이다.
따라서 배포 시에는 store에 데이터베이스를 연결하여 세션을 유지한 것이 좋다.
( 보통 레디스(Redis)가 쓰인다. )
[사용방법 ( npm 추가 )]
학습 : https://opentutorials.org/course/3400/21838
express-session은 req 객체안에 req.session 객체를 만든다.
이 객체에 값을 대입하거나 삭제해서 세션을 변경할 수 있다.
나중에 세션을 한번에 삭제하려면 req.session.destroy()메서드를 호출하면된다.
현재 세션의 아이디는 req.sesstionID로 확인 할수있다.
출처 : node.js 교과서
'Javascript > Node.js' 카테고리의 다른 글
Node - Express [Router 객체로 라우팅 분리] (6) | 2019.02.27 |
---|---|
Node - Express 미들웨어 connect-flash (0) | 2019.02.27 |
Node - Express 미들웨어 static (0) | 2019.02.27 |
Node - Express 미들웨어 body-parser (1) | 2019.02.26 |
Node - Express 미들웨어 morgan (0) | 2019.02.26 |