• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

음...passport를 사용하는 이유...?

22.03.12 00:33 작성 조회수 898

2

일단 제목만 보고 상당히 "어...?"하셨겠지만, 정말 궁금했던 것 중에 하나입니다.

일단 저는 nodejs교과서를 책으로 읽고, express로 토이프로젝트를 2번 정도 진행을 해본 경험이 있으며, 그 중 한번만 jwt를 이용하여 auth를 구현하였습니다.(passport 없이)

[제가 구현한 방식은]: ID,PW를 받아서 PW를 bcrypt로 암호화하여서 DB에 넣고, 후에 로그인 요청이 오면 ID,PW가 맞는지 확인한 후, 맞으면 jwt 토큰을 쿠키 형식으로 부여. 후에 요청하면 token을 verify하여 회원인지 확인.

이었습니다. 개인적으로 토이프로젝트를 제 개인 서버에 올려 24시간 가동되게 하는 것을 선호해서, 트래픽도 없지만 굳이 세션으로  무리를 주고 싶지 않았고, 또한, 굳이 세션이 필요한 서비스가 아니여서 jwt만으로 하였습니다.

nodejs 교과서에서는 세션과 쿠키 처리 등 복잡한 작업을 쉽게 처리해줄 검증된 모듈로 passport를 소개하였는데, 만약에 위와 같은 정도의 작업만을 하게되는 경우, passport를 쓰는 것의 이점이 있나요?

제가 passport의 장점을 크게 느끼지 못하고 있는 것이, session을 사용하지 않으면 굳이 passport를 사용해야 하나 라는 생각이 들어서 질문드립니다.

아 그리고, 저 정도의 기능을 구현한다고 하면 passport를 사용하는 것보다 직접 코드를 짜는것이 더 짧아서 passport를 사용하는 것의 장점이 더욱더 궁금하였습니다...

session을 이용하지 않는, passport-local의 경우이겠네요.

답변 1

답변을 작성해보세요.

2

사실 코드량은 크게 차이나지 않고 비슷한 것 같습니다. passport는 서비스가 다양한 로그인을 동시에 사용할 때 진가를 발휘하는데요. 하나만 하더라도 충분히 유용하긴 합니다. req.user 만들어주는 것, 매번 세션 검증해주는 것 등이 내부에서 저절로 구현되기 때문입니다. 물론 필수는 아니고 직접 구현할 수도 있습니다. 그리고 jwt가 세션에 비해 디비 쿼리를 덜 날리긴 하지만 세션 자체가 무리를 주는 행위라고는 생각들지는 않습니다.

NoobDev님의 프로필

NoobDev

질문자

2022.03.21

"세션보다는 다양한 서비스를 이용해서 로그인을 할때 진가를 발휘한다" --> 완전 이해됐습니다. strategy만 짜면 되고 나머지는 하면 알아서 되니 그렇겠네요.

혹시 passport에서 sereialize를 하게 되면 세션들은 어디에 저장되나요?

그러니까 제 말은, session 용으로 DB를 따로 만들지 않았는데, 메모리상에 저장되나 뭐 이러한 것입니다

--> 아마 passport 내부에서 express-session 을 이용하니까 메모리에 저장될 것 같은데, 이렇게 만들어서 배포환경에 올리면 메모리쪽에 부하가 걸리지 않을까 싶은데, 따로 redis 등을 이용해서 DB에 올려야 배포환경으로 만들 수 있을까요? 아니면 그냥 이대로 해도 괜찮을까요?

네 메모리에 저장합니다. 나중에 스케일링 시 이슈가 생겨서 레디스로 보통 옮깁니다.