codestates / codestates/Podo

[:space_invader:Error] Client_Request 토큰 전달 방식

Open
#193 0 comments 2 reactions 1 assignee Claimed by @LauraBoraKim View on GitHub
Error Handling Log
Dominant language
JavaScript
Stars
0
Forks
2
PR merge metrics
No merged PRs in 30d

Description

**에러를 상세히 작성하세요**
지난 프로젝트에서는, 인증 JWT토큰을 서버로부터 받은 후에 스토어의 상태에 저장하고,
헤더에 담아 보내는 기이하고 이상한 방식을 사용했다.
그래도 잘 동작하기는 했고, 우리 팀은 이번에도 그 방식을 그대로 사용했으나 Req에 토큰이 잘 전달되지 않아 인증에 실패했다.

**에러의 원인이 무엇인가요**
정확한 원인을 모른다면 예상되는 원인을 작성하세요
1. 클라이언트에서 토큰을 저장하는 방식
2. 서버에서 토큰을 send하는 방식
3. 클라이언트에서 요청하는 방식
--> 정확한 원인은 이전 프로젝트에서 찾을 수 있었다.
우리는 이전에 Req.header에 토큰을 담아 보냈고 그 덕에 인증이 정상적으로 이루어졌다고 생각했지만,
사실 서버 측에서 sendAccessToken 함수를 통해 쿠키를 설정한 이상,
**클라이언트는 별도로 토큰을 보내지 않아도** 요청이 정상적으로 이뤄진다.
정말 기초적인 개념임에도 이전 프로젝트에서 잘 작동된다는 이유만으로
단단히 오해를 하고 있었다.

또한, 클라이언트 코드에서 쿠키를 직접 사용하는 방법을 사용하려고 했었는데,
클라이언트에서 쿠리를 setCookie/getCookie등을 사용해 쿠키에 직접 접근하는 방식은 옳지 않다는 것을 알게 되었다.

**에러를 어떻게 해결했나요r**
서버는 json 방식은 보내지 않고,
`sendAccessToken: (res, accessToken) => {
res.status(200).cookie("jwt", accessToken, {
sameSite: "None",
secure: true,
httpOnly: true,
expires: new Date(Date.now() + 1000 * 60 * 60 * 48),
});
},`
방식으로 쿠키에 토큰을 담아 보냈고,

클라이언트는 별도의 header 값 설정 없이 요청을 보냈다.

**검색 키워드와 도움이 된 레퍼런스를 작성하세요**
이전 프로젝트의 요청 방식을 변경한 후 테스트했음에도 정상적으로 실행되는 것을 보았고
그제서야 작동 방식을 제대로 이해할 수 있었다.
쿠키 관련 레퍼런스 : https://7942yongdae.tistory.com/129

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.