Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- cookie
- TypeScript
- AWS
- 자료구조
- GIT
- OCR
- react
- JavaScript
- dfs
- jest
- 게임
- game
- Python
- MySQL
- flask
- MongoDB
- typeORM
- Bull
- mongoose
- class
- Sequelize
- Dinosaur
- Queue
- 공룡게임
- nodejs
- Express
- nestjs
- Nest.js
- 정렬
Archives
- Today
- Total
포시코딩
1월15일 본문
728x90
로그인 API의 Token 처리
before
controller
const response = await this.usersService.login(email, password);
res.cookie('accessToken', response.accessToken);
res.cookie('refreshToken', response.refreshToken);
res.status(response.code).json({ message: response.message });
기존에는 로그인 API 요청에 대해 모든 로그인 과정이 끝나면 백엔드에서 쿠키를 저장해줬었는데
쿠키를 생성하는 주체가 백엔드 서버가 되면 안된다는 피드백을 받았다.
프론트가 완전 분리 되어있다면 백엔드에선 쿠키를 만들어 전달하지 않습니다.
응답값으로 쿠키를 주고, 프론트에서 쿠키를 굽던 localstorage 를 사용하던 결정을 합니다.
모바일애플리케이션에서는 쿠키가 존재 하지 않기 때문에,
서버가 쿠키를 만들어 전달하면 모바일애플리케이션은 그 토큰을 사용할수 없습니다. (어렵습니다)
API 관련해서 처음 수업을 받을 때 샘플 API 문서에
로그인 응답값으로 왜 쿠키를 전달하고 있지?
그냥 바로 저장시켜버리고 로그인 했다는 메시지만 전달해주면 되는거 아닌가?
라는 생각을 했었는데 위 이유 때문이었다는게 머리 스쳤다.
그래서 이제서야 잘못 처리하고 있었다는걸 깨닫고 바로 수정 작업에 들어갔다.
after
작업은 간단해보였다.
기존에 res.cookie로 저장하던걸
그냥 res.json으로 각각의 accessToken과 refreshToken을 프론트엔드에서 요청한 곳으로 전달한 뒤
거기서 알아서 처리하게끔 변경해주면 됐다.
controller
const response = await this.usersService.login(email, password);
if (response.code !== 200) {
return res.status(response.code).json({ message: response.message });
}
return res.status(response.code).json({
message: response.message,
accessToken: response.accessToken,
refreshToken: response.refreshToken,
});
프론트로 토큰들 전달
login.js
// ..생략
if (code === 200) {
document.cookie = `accessToken=${res.accessToken}`;
document.cookie = `refreshToken=${res.refreshToken}`;
location.href = '/';
}
프론트에서 js로 어떻게 쿠키를 저장하나 막연했는데
검색해보니까 너무쉬워 깜짝 놀랐다.
참고한 곳
https://velog.io/@rudnf003/javascript-쿠키-생성-및-관리
[javascript] 쿠키 생성 및 관리
📝 HTTP 특성 HTTP는 Client가 요청을 보내면 Server에서 응답 후 연결을 끊는 특징이 있다. 응답 후 연결을 끊음으로써 지속적으로 연결을 유지하지 않아도 된다는 장점이 있으나 서비스 제공 시 요
velog.io
728x90
'TIL' 카테고리의 다른 글
1월17일 (0) | 2023.01.18 |
---|---|
1월16일 - session, jwt, OAuth (0) | 2023.01.16 |
1월14일 - 스터디 준비 (0) | 2023.01.14 |
1월13일 - throw & try/catch 예외처리(Exception Handling) (0) | 2023.01.13 |
1월12일 (0) | 2023.01.12 |