Front-End (1) 로그인 폼에 이메일과 비밀번호를 입력 (2) saga의 로그인 함수 실행
Back-End (3) login POST router 실행 (4) passport.authenticate(‘local’, …) 부분이 실행 (5) passport/local.js 로그인 전략 부분이 실행 (6) (5)의 결과가 passport.authenticate(‘local’, …) 부분의 callback 함수로 전달되고, 로그인에 문제가 없는 경우, passport 로그인 시도(req.login) (7) passport/index.js의 serializeUser부분이 실행된다. serializeUser부분에서는 cookie에 묶어 줄 로그인 사용자 id를 전달한다.
deserializeUser부분은 로그인이 성공한 이후부터의 요청부터 router가 실행되기 이전에 실행된다. deserializeUser부분이 실행되면, 저장되었던 사용자의 id를 토대로 사용자 정보를 복구해서 done(null, user)를 통해 req.user로 사용자 정보를 전달한다.
이를통해 router에서는 req.user로 사용자 정보의 참조가 가능해진다.
(8) 내부적으로 header를 통해 Front-End로 전달할 cookie 정보를 전달한다. (9) Cookie 정보와 함께 Front-End로 사용자 정보를 전달한다.
노트필기 참고
로그인 기능 구현(passport)
passport, passport-local 설치
1
$ npm i passport passport-local
passport-local은 일반적인 id, password를 통한 로그인을 위한 라이브러리
back/passport/index.js 작성된 index.js 파일은 app.js에서 사용된다.
1 2 3 4 5 6 7 8 9 10
const passport = require('passport'); const local = require('./local');