inflearn logo
강의

Course

Instructor

Node and React series that you can learn by following - Basic lecture

Node React Basics Lecture #14 Logout Function

로그아웃 findOneAndUpdate 함수

170

minkyu11804941

14 asked

0

안녕하세요. 2024년도에 처음으로 Node.js를 학습해 보기 위해 해당 강의를 수강 중 입니다. 물론 Mongodb 관련(mongoose) callback 함수 등 변경점이 많아서 구글링과 인프런 질문 게시판을 활용하며 저만의 코드로 변경하는 중입니다. 그러던 중, token에 대한 궁금증이 생겨서 질문을 올립니다.

강의에서는 mongoose의 DB에 저장된 인스턴스를 찾은 후, 해당 인스턴스의 속성 값을 변경하는 findOneAndUpdate를 활용하려 하고 있습니다. 하지만, 저희는 기존에cookie에 x_auth라는 속성명으로 토큰값을 저장하고 있었습니다. 문서들을 찾아보니, 토큰 정보 등은 서버가 아닌 클라이언트가 저장하고 있는 것이 편리하기 때문에, DB의 보안성 때문에, DB 접근 시간보다 세션 또는 쿠키 접근이 빨라서 등 여러 이유가 있는 것 같습니다.

 

그렇다면, 저희가 만든 userSchema에서 token과 관련된 속성들의 존재 이유는 무엇인가요? 저희는 token을 login 과정에서도 cookie의 x_auth에 저장하고, db 갱신을 해주지는 않는데, 왜 굳이 logout 라우트에서는 findOneAndUpdate를 사용하는 것인가요? 그냥 쿠키의 x_auth 값을 비워주는 것은 안되는 것인가요??

긴 글 읽어주셔서 감사합니다.

logout node.js

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 민규님.

Node.js와 Mongoose를 처음 학습하신다고 하니, 많은 부분이 생소하실 수 있습니다. 질문 주신 내용에 대해 답변 드리겠습니다.

클라이언트-서버 환경에서 토큰 인증을 관리하는 방법에는 여러 가지가 있으며, 일반적으로 다음과 같은 이유로 Mongoose를 통해 DB의 토큰 값을 수정합니다:

  1. 로그아웃 처리의 확실성: 클라이언트 쪽의 쿠키를 지우는 것으로 단순히 로그아웃을 처리하게 되면, 서버 루트에 클라이언트의 쿠키가 잘못 남아 있을 수 있는 위험이 있습니다. 이를 방지하기 위해 서버에서도 해당 사용자의 토큰을 확실히 삭제하는 게 좋습니다.

  2. 보안성 강화: 만약 사용자가 여러 디바이스에서 접속을 시도한 경우, 단순히 하나의 디바이스에서 쿠키를 지운다고 하더라도 다른 디바이스에서는 여전히 접근할 수 있는 위험이 있습니다. 서버 DB의 토큰을 지우는 것은 모든 세션을 종료시키는 것을 의미하므로, 보안 측면에서 효과적입니다.

  3. 서버-클라이언트 타협: 최적의 보안을 유지하면서 클라이언트의 데이터를 통제 및 관리하기 위한 방법으로 사용될 수 있습니다. 로그인 세션 관리를 DB와 쿠키 모두를 활용함으로써 잠재적인 보안 위협을 줄이고, 데이터의 일관성을 유지할 수 있습니다.

마지막으로 이 게시글에 유사한 문제를 해결하는 방법이 논의되었습니다. findOneAndUpdate 함수를 사용할 때, 이전에는 Mongoose에서 콜백을 지원했지만 현재는 Promise 또는 Async/Await로 활용해야 하는 부분이 변경되었습니다. 여기서도 req.user._idundefined로 나오는 경우가 동일하게 논의되었으며, 미들웨어(auth)에서 해당 값을 제대로 넣는지를 꼭 확인하셔야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

깃 이메일이랑 비번이 필요하다고 하네요

0

35

1

404 에러

0

102

1

34강 인증 체크에서 element 사용 때문에 에러나시는 분들 이렇게 하심 됩니다.

0

119

1

로그인, 로그아웃, 토근 작동 안 함

0

239

0

9강 오류 어떻게 해결하나요?

0

194

1

localhost 에서 연결을 거부했습니다.

0

1927

4

포스트맨에서 true가 안떠요

0

150

1

왜 안되나요

0

129

1

몽고db 연결 오류가 납니다 위에껀 입력한 코드, 아래껀 터미널이에요

0

243

1

로그아웃 401 에러(Unauthorized)

0

504

2

암호가 해싱되지 않고 입력값 그대로 db에 저장되는 문제

0

149

1

7강중에서

0

162

2

User.findByToken is not a function

0

211

1

루트 디렉토리

0

271

1

useState

0

560

1

프록시 잘 설정했는데도 404 오류 뜨는 분들

5

875

6

webpack 관련 에러 질문

0

219

1

리액트 관련 질문

0

272

1

14강 로그아웃 안됨

0

318

1

mongoDB 데이터 확인하는 법

0

410

1

postman 에러

0

291

1

선생님 리덕스를 사용하면 어떠한 부분이 좋은지 알 수 있을까요?

0

234

1

다음과 같은 에러들이 발생합니다.

0

273

1

14강 로그아웃 기능 구현시 postman에서 Cannot POST 오류가 뜹니다.

0

379

1