Passport 모듈

‍박소연·2023년 3월 10일

Passport 모듈이란?

passport는 서비스를 사용할 수 있게끔 해주는 여권 같은 역할을 하는 모듈이다. 클라이언트가 서버에 요청할 자격이 있는지 인증할 때에 passport 미들웨어를 사용한다.

Passport 처리 과정

  1. 요청이 라우터로 들어온다.
  2. 미들웨어를 거치고, passport.authenticate()를 호출한다.
  3. authenticate()에서 passport/localStrategy.js를 호출한다.
  4. 전략을 실행하고, done()을 호출하면, 다시 passport.authenticate() 라우터로 돌아가 다음 미들웨어를 실행한다.
  5. done()을 토대로, 로그인 성공 시 사용자 정보 객체와 함께 req.login()을 자동으로 호출한다.
  6. req.login()이 passport.serializeUser()을 호출한다.
module.exports = () => {
    passport.serializeUser((user, done) => {
        done(null, user.id); //req.session에 사용자 아이디 키값만 저장
    });
//바로 deserializeUser로 넘어가서 sql 조회후 req.user 객체를 등록하고 done()을 반환하여 req.login 미들웨어로 다시 되돌아감
    passport.deserializeUser((id, done) => {
        User.findOne({ where: { id } })
            .then(user => done(null, user))
            .catch(err => done(err));
    });
};
  1. 미들웨어 처리 후, res.redirect()를 응답하면, 세션 쿠키를 브라우저에 보내게 된다.

잘 몰랐던 부분

module.exports = () => {} 라는 구조는 화살표 함수 생성 구조

0개의 댓글