✏️ 학습 목표
- 쿠키의 작동 원리를 이해할 수 있다
- 회원가입 및 로그인 등의 유저 인증에 대해 설명할 수 있다.
- 세션의 개념을 이해할 수 있다.
- 쿠키와 세션은 서로 어떤 관계이며, 각각이 인증에 있어서 어떤 목적으로 존재하는지 이해할 수 있다.
- 세션의 한계를 이해할 수 있다.
'Set-Cookie':[
'cookie=yummy',
'Secure=Secure; Secure',
'HttpOnly=HttpOnly; HttpOnly',
'Path=Path; Path=/cookie',
'Doamin=Domain; Domain=codestates.com'
]
www.google.com
같은 서버에 접속할 수 있는 이름이다.www
같은 도메인 앞에 추가로 작성되는 부분이다.http://www.localhost.com:3000/users/login
이면Domain
은 localhost.com
이 된다.http://www.localhost.com:3000/users/login
이면Path
는 /users/login
이 된다./
으로 설정되있다.Path
가 /user
이고 요청하는 세부 경로가 /users/codestates
인 경우MaxAge
는 쿠키가 유효한 시간을 초 단위로 설정하는 옵션이다.Expires
는 클라이언트의 시간을 기준으로 이후 지정된 시간, 날짜를,MaxAge
또는 Expires
옵션이 없는 쿠키로,MaxAge
또는 Expires
에 지정된 유효시간 만큼 사용가능한 쿠키이다.Secure
옵션이 true
로 설정된 경우 HTTPS
를 이용하는 경우에만 쿠키를 전송할 수 있다.Secure
옵션이 없다면 모두 쿠키를 전송할 수 있다.localhost
인 경우에는 HTTPS가 아니어도 쿠키 전송이 가능하다.true
인 경우, 자바스크립트로 쿠키에 접근이 불가능하다.false
로 지정된다.false
인 경우 document.cookie
를 이용해,Cross-Origin
요청을 받은 경우, 요청에서 사용한 메소드와,GET
, POST
, PUT
, PATCH
...)Lax
:Cross-Origin
요청이면 GET
메소드에 대해서만 쿠키를 전송한다.Strict
: 가장 엄격한 옵션이며, same-site
인 경우에만 쿠키를 전송한다.same-site
는 요청을 보낸 Origin과 서버의 도메인,프로토콜,포트가 같은 경우이다. 하나라도 다르면 Cross-Origin
으로 구분된다.None
: 가장 관대한 옵션이며, 항상 쿠키를 보내줄 수 있다Secure
옵션이 필요하다StateLess
한 인터넷 연결을 Stateful
하게 유지할 수 있다.res.cookie
로 쿠키의 값을 무효한 값으로 갱신하거나, res.clearCookie
로 쿠키를 삭제해버리면 된다.const express = require('express');
const session = require('express-session');
const app = express();
app.use(
session({
secret: '@codestates',
resave: false,
saveUninitialized: true,
cookie: {
domain: 'localhost',
path: '/',
maxAge: 24 * 6 * 60 * 10000,
sameSite: 'none',
httpOnly: false,
secure: true,
},
})
);
express
서버에서 쉽게 세션을 위한 공간을 만들어준다.secret
옵션의 비밀키를 이용해 암호화해 세션 id라는 것을 생성한다. req.session
으로 접근할 수 있으며,