개발/프로젝트

[세션 / 토큰 로그인 프로젝트] 진행 과정(1) 쿠키 전달한 이후 어떻게 검증할 것인가?

prpn97 2023. 7. 8. 22:29

 

현재 진행상태

지난 포스팅에서 세션로그인할 때 쿠키에 관련해서 작성했다. 

그래서 공부한 것들을 토대로 먼저 내가 구현한 것을 설명하면,

세션검증시 쿠키: 로 되어있는 부분은 req.cookies로, 개발자도구에 보이는 모든 쿠키다.

지금은 1개만 있는 상태다. 이전 포스팅에서 설명했듯, s: 이후 . 까지가 실질적인 sessionID이다.

 

express에서 session을 통해 쿠키를 만들 때 sessionID를 저렇게 넣어준다.

그렇기 때문에 굳이 다른 쿠키를 만들 필요 없이 저기서 파싱해서 쓸 수 있다.

다음과 같이 구현했고, 저렇게 콘솔을 찍어서 위의 스샷대로 확인할 수 있었다. 

(아직 에러처리 부분은 미들웨어를 만들지 않아서 임시로 저렇게 res로 보내고 있다.)

 

그렇다면 드디어 sessionID를 만들고, 쿠키 안에 sessionID를 주고받으며 검증하는 로직은

임시로 만들어진 상태다. 

저 로직은 프론트에 보낼 때 생성한 세션id(req.sessionID)와

프론트에서 받은 쿠키에서 sessionID를 파싱한 값을 대조하는 것이다. 

 

그런데...

이 방법은 제대로 세션로그인을 구현한 것이 아니다. 

왜냐하면 세션로그인의 특징은 세션에 관한 정보를 메모리나 db 등 저장소에 보관하고,

저장소에 보관된 sessionID와 프론트에서 요청했을 때 가지고 있는 sessionID를 대조해야 하는데,

 

위 방법대로라면 sessionID를 백엔드에서 보내주면서 db에 저장하긴 하지만,

db에 접근해서 sessionID를 확인하고 인증하는 것이 아니라

처음 생성할 때의 sessionID와 프론트가 가지고 있는 sessionID가 맞는지 대조하고 있다.

 

어떻게 생각하면 이론적으로는 인증과정을 거친 로그인이라고 말할 수는 있지만,

애초에 세션로그인이 아닐 뿐더러 세션로그인의 장점을 사용하지 않은 것이다.

세션로그인의 장점은 db에 보관하여 정보를 확인하기 때문에 안전한 것인데,

이 방법은 사실상 express-session을 사용한 토큰로그인과 같은 것이다.

 

단순히 쿠키에 대해 공부하면서 쿠키가 이동하는 샘플을 만들기 위해 임시로 구현한 코드고,

(저 방식이 두 차례 프로젝트동안 사용하다보니 당연했고 익숙했다..)

이제 세션로그인방식대로 구현해보고자 한다. 

 

 

728x90