반응형
🍪 쿠키(Cookie)
- 브라우저가 웹 사이트를 방문할 때마다 이전에 방문했던 정보를 기억하는 데이터 파일이다.
- 쿠키가 있기 때문에 여러 페이지를 이동할 때마다 로그인을 하지 않고 사용자 정보를 유지 할 수 있다.
- 데이터를 여러 사이트에 공유할 수 있기 때문에 보안에 취약하다
- 지워도 되고, 보안이 취약해도 큰 일이 없는 수준의 정보들을 브라우저에 저장한다
🍪 쿠키 만들어보기
// 'Set-Cookie'를 이용하여 쿠키를 할당하는 API
app.get("/set-cookie", (req, res) => {
let expire = new Date();
expire.setMinutes(expire.getMinutes() + 60); // 만료 시간을 60분으로 설정합니다.
res.writeHead(200, {
'Set-Cookie': `name=sparta; Expires=${expire.toGMTString()}; HttpOnly; Path=/`,
});
return res.end();
});
🍪 쿠키 조회해보기
// 'req.headers.cookie'를 이용하여 클라이언트의 모든 쿠키를 조회하는 API
app.get('/get-cookie', (req, res) => {
const cookie = req.headers.cookie;
console.log(cookie); // name=sparta
return res.status(200).json({ cookie });
});
🍪 Cookie-parser
Cookie-parser미들웨어는 요텅에 추가된 쿠키를 req.cookies객체로 만들어준다. req.header.cookie와 같이 번거롭게 사용하지 않아도된다.
// 설치
yarn add cookie-parser
// 미들웨어 전역으로 사용
app.use(cookieParser())
import cookieParser from 'cookie-parser';
app.use(cookieParser());
// 'req.cookies'를 이용하여 클라이언트의 모든 쿠키를 조회하는 API
app.get('/get-cookie', (req, res) => {
const cookies = req.cookies;
console.log(cookies);
return res.status(200).json({ cookie: cookies });
});
🔐 세션(Session)
- 쿠키를 기반으로 구성된 기술로, 인증 정보를 쿠키가 아닌, 서버 측에서 저장하고 관리하는 방식이다
- 사용자가 많아질수록 서버 자원을 많이 차지한다.
- 클라이언트에서 Request를 보내면, 해당 서버에서 클라이언트에게 유일한 ID를 부여하는데 이것이 세션ID이다.
- 브라우저를 닫거나, 서버에서 세션을 삭제했을때 삭제되므로, 쿠키보다 보안이 좋다
🔐 /set-session API 만들기
let session = {};
app.get('/set-session', function (req, res, next) {
// 현재는 sparta라는 이름으로 저장하지만, 나중에는 복잡한 사용자의 정보로 변경될 수 있습니다.
const name = 'sparta';
const uniqueInt = Date.now();
// 세션에 사용자의 시간 정보 저장
session[uniqueInt] = { name };
res.cookie('sessionKey', uniqueInt);
return res.status(200).end();
});
- 서버에서 해당 사용자의 정보를 저장하기 위해 session객체를 생성
- /set-session API가 호출되면 name=sparta의 정보를 세션에 삽입하고, 해당하는 데이터를 검색하기 위한 시간 정보를 쿠키로 반환한다
🔐 /get-session API 만들기
app.get('/get-session', function (req, res, next) {
const { sessionKey } = req.cookies;
// 클라이언트의 쿠키에 저장된 세션키로 서버의 세션 정보를 조회합니다.
const name = session[sessionKey];
return res.status(200).json({ name });
});
- 쿠키에 저장된 sessionKey를 이용하여 session에 저장된 데이터를 불러온다.
반응형
'TIL' 카테고리의 다른 글
[TIL] JWT(Json Web Token) (0) | 2024.02.02 |
---|---|
[TIL] 개인과제 초기 설계 (0) | 2024.01.31 |
[TIL] 트랜잭션(Transaction) (1) | 2024.01.29 |
[TIL] JS 프로그래머스 - K번째 수 (0) | 2024.01.26 |
[TIL] SQL과 종류 (0) | 2024.01.25 |
댓글