Passport.js는 Node JS의 인증모듈이다. 몹시 편리하다!!
뭐... 구글링을 통해 어떻게든 사용은 하고 있는데... 그 동작원리가 궁금했다.
모든 요청은 app을 타고 들어온다. 예를 들어서 위에서부터 차례대로 helmet, cookie_parser, bodyParser... 를 동작한 다음 passport initialize가 실행된다. 공식 문서에 따르면 Express-Based Application에서 passport를 쓰려면 초기화를 해줘야한다.
뭐 암튼, 지금은 로그인을 한 적이 없으니 클라이언트의 세션에 아무 정보도 기록되어있지 않다.
그런데 로그인을 성공적으로 하게되면 인증이 완료되고 serializerUser 함수가 실행된다.
serializeUser 함수를 통과하면서 클라이언트는 Session ID를 가지고 있고, 서버는 그 유저에 대한 정보를 지니고 있다.
아까도 얘기했지만 모든 Request는 app을 통과하는데 그 app에서 passport.session을 실행한다! 만약 request를 날리는 클라이언트가 session을 가지고 있다면???
passport.deserializeUser가 실행되면서 req.user에 그 유저에 대한 정보가 기록된다. 반복적으로 로그인을 할 필요가 없을 뿐더러 서버는 편리하게 유저의 정보를 확보할 수 있다.
예를 들어서 이런 함수를 만들어서 접근제어를 할 수 있다. req에 user가 있으면 인증된 사용자이고 없으면 인증되지 않은 사용자이다!
request가 들어올 때마다 session을 활용해서 user 정보를 확인하므로 매우 편리하게 User Handling이 가능하다는 게 Passport의 장점인 것 같다.
더욱 자세한 사항은 공식문서롤 참조하자.
'웹개발 > 웹 개발 & 프로그래밍' 카테고리의 다른 글
[NodeJS] 로그 남기는 Winston, 그리고 morgan과 결합 (0) | 2020.08.07 |
---|