배포전에는 엑세스토큰을 쿠키에넣고 매번 쿠키를 검사하여 로그인상태를 결정했다.
그런데 쿠키 보안설정을 한 후 배포를 하고나서 이것저것 눌러보는데 새로고침할때마다 로긴상태가 초기화 되는 것이다!
면밀히 오랫동안 구글링을 하여 알아낸것은, 쿠키에 httpOnly:true를 설정했을때는 클라이언트에서 쿠키를 절.대 다룰 수 없다는 것이다.
때문에 보안은 강화되는 한편, 클라이언트에서 쿠키를 검사하여 로긴상태를 결정할 수 없게된다.
때문에 리프레시토큰을 가지고 새로고침을 할때마다 엑세스토큰을 만들고, 그 액세스토큰으로 로긴상태를 결정해야 한다.
즉, 리프레시토큰을 만들지 않을꺼면 애초에 쿠키에 토큰을 저장하는게 쓸모가 없다.
httpOnly:true를 설정하지 않으면 자바스크립트에서 쿠키를 다룰 수 있지만, 자바스크립트에서 쿠키를 다룰 수 있다는 것은
Local Storage랑 다를바가 없다.
즉 쿠키를 쓰는 이유가 없어진다.
내가 위에 취소선 적은 내용은 1달이 지나서 완전히 틀린 내용으로 밝혀졌기 때문이다.
로그인 상태유지는 local Storage에 로그인 했냐 안했냐?? 만 알게 해주면 된다.
자세한 내용은 아래 글에 있고 요약만 하면
localStorage에 로그인 했냐? 안했냐만 넣어주면 된다.
이러면 개인정보가 노출될 필요가 전혀 없다.
로그인 상태검사는 local storage를 검사해주기만 하면 된다.
나는 session storage에 넣었다.
useEffect(() => {
// if (cookies.get("jwt") || cookies.get("kakao-jwt")) {
if (window.sessionStorage.getItem("jwt")) {
setIsLogin(true);
} else {
setIsLogin(false);
}
}, [window.sessionStorage.getItem("jwt")]);
로컬에 안넣고 세션에 넣은 이유는 창을 껐을때 정보가 다 사라지길 원했기 때문이다.
https://wnsdufdl.tistory.com/277
'프로젝트 > 코드스테이츠 - 4주프로젝트' 카테고리의 다른 글
배열을 map하고 각 인덱스의 자료를 모달창에 렌더링시킬때, 무조건 가장 마지막 인덱스의 자료가 렌더링되는 버그 (0) | 2021.12.15 |
---|---|
UseEffect를 이용한 무한루프방지(sideEffect로부터 보호) (0) | 2021.12.13 |
경고 : setTimeout으로 인한 메모리누수 => 페이지 unmount될때 setTimeout 꺼주기 (0) | 2021.12.09 |
URL.createObjectURL()은 formData를 url로 바꿔준단걸 몰라서 겪은 에러 (0) | 2021.12.09 |
순수함수의 중요성/position속성을 써야할때와 안될때 (0) | 2021.12.08 |