passport 사용이유

2024. 11. 8. 11:38개발/토막난 상식

반응형

passport는 서비스가 다양한 로그인을 동시에 사용할 때 진가를 발휘하는데요. 하나만 하더라도 충분히 유용하긴 합니다. req.user 만들어주는 것, 매번 세션 검증해주는 것 등이 내부에서 저절로 구현되기 때문입니다.

 

 

passport는 요청을 인증하는 전략을 사용한다. 여기서 전략은 사용자 이름, 비밀번호 확인, OAuth를 사용한 위임 인증까지 다양하게 존재한다.

따라서 passport에 요청 인증을 하기 전에 전략을 구성을 해야한다.

use 메서드를 통해 전략과 그 구성이 제공된다. 아래는 LocalStrategy 전략으로 사용자 이름/ 비밀번호 인증에 사용하는 예이다.

 

 

passport 이용한 인증 과정

로그인 전

  1. 로그인 요청
  2. passport.authenticate 메서드 호출
  3. 로그인 전략 수행
  4. 로그인 성공 시 사용자 정보 객체와 함께 req.login 호출
  5. req.login 메서드가 passport.serializeUser 호출
  6. req.session에 사용자 아이디만 저장
  7. 로그인 완료

로그인 후

  1. 모든 요청에 passport.session() 미들웨어가 passport.deserializeUser 메서드 호출
  2. req.session에 저장된 아이디로 DB에서 사용자 조회
  3. 조회된 사용자 정보를 req.user에 저장
  4. 라우터에서 req.user 객체 사용 가능

 

https://www.passportjs.org/