Session
쿠키가 등장하면서 요청, 응답이라는 단순한 의사소통만이 가능했던 웹이
이전에 통신했던 내용을 기억할수 있게되었다.
덕분에 개인화, 인증과 같은 중요한 발판이 마련되었지만
쿠키를 통해서 직접 인증을 구현하는것은 매우 위험한일이다
쿠키가 유출될수도, 조작될수도 있기때문이다
하여 쿠키로는 사용자를 식별하는 용도로만 사용하고
실제 데이터는 Session을 통해 서버쪽 파일이나 데이터베이스의 형태로 안전하게 구현하여 사용한다.
express session 설치
express session 예제
express-session이라는 미들웨어를 모듈로서 설치하고
app.use를 통해 사용자 요청이 있을때마다
session 이라는 함수를 실행시킨다.
그럼 express-session 미들웨어가 내부적으로 개입해서
우리 어플리케이션이 session을 사용할 수 있게된다.
위와같이 객체를 전달하게되면
안에 있는 값들에 따라서 세션이 동작하게되는 동작방법을 바꿀 수 있다
객체안에 있는 옵션
secret
꼭 넣어줘야하는 옵션이다
다른사람들에게 노출되면안되고 나자신만 알고있어야한다.
버젼관리를 할때에도 소스코드에 포함시키지말고 별도의 파일로 빼서 관리해야한다
resave
false로하면 session데이터가 바뀌기전까지는 session저장소의 값을 저장하지않는다
true면 값이 바뀌었건 바뀌지않았건 계속 저장소에 저장을 한다
보통 false로 두면 된다.
saveUninitialized
true로 하면, session이 필요하기전까지는 session을 구동시키지않는다
false면 session이 필요하건 안하건 무조건 구동시킨다
이는 서버에 큰 부담을 줄 수 있으므로 보통 true로 해둔다.
session 미들웨어
session미들웨어를 설치하면
이 미들웨어가 내부적으로 request객체의 프로퍼티로
session이라고 하는 객체를 추가시킨다.
위와같이 console.log(req.session)을 찍어보면
session객체가 찍힌다.
그리하여 우리는
session객체가 갖고있는 저장소에 값을 저장해서
사용자의 정보를 유지할수 있게되는데,
아래 예제에서
session.num에 값을 저장하여 사용해보자.
저장한 값은 메모리에 저장되어
새로고침할때마다 num값이 증가하는 것을 볼 수 있다.
하지만 값을 저장하는 이 메모리는 서버를 껐다키면 값이 다 증발해버린다.
session file store
기본적으로 session의 값이 저장되는 메모리는
한번 껐다켜면 정보가 날아가버리기때문에
값이 날아가지않도록 저장하는 방법에 대해 알아보자
여러가지 모듈들이 있으나 그중에서도 제일 간편한 file store를 보자
file store설치
사용방법
var FileStore = require('session-file-store')(session);
위 코드를 추가해주고
app.use에 store: new FileStore() 를 추가해준다
new FileStore() 가 동작하는 기본적인 방법을 바꾸고싶다면
옵션값에 다음 값들을 추가해서 사용하면 된다.
store
위 코드를 적용한뒤 서버를 reload하면,
이처럼 파일이 생성된다.
파일안에는 다음과같은 정보들이 담긴다.
여기서 reload를 하면 우리가 설정했던 num 값이 1씩 증가하는 것을 볼 수 있다.
사용자가 갖고있는 session아이디가 서버로 접속하게되면
request header에 쿠키값에
서버쪽으로 session 아이디를 전달하는데
session 미들웨어가 이 아이디값을 가지고
session store에서
아이디값에 대응하는 파일을 읽고,
그 안에 있는 데이터를 기반으로
request객체의 session이라고 하는 프로퍼티에 객체를 추가하는 것이다.
<출처>
생활코딩
'Node.js' 카테고리의 다른 글
javascript 런타임 node.js과 nvm (0) | 2021.12.22 |
---|---|
Node.js path쿠키 (0) | 2021.06.03 |
Node.js Secure 쿠키와 HttpOnly 쿠키 (0) | 2021.06.03 |
Node.js Session 쿠키와 Permanent 쿠키 (0) | 2021.06.01 |
Node.js cookie 쿠키 생성하고 읽기 (0) | 2021.06.01 |
댓글