[TIL_2023.11.22] Node.JS passport 모듈 공부

김효진·2023년 11월 22일
0
post-custom-banner

프로젝트를 수행하면서 로그인 인증 기능 구현을 위해 현업에서도 많이 쓰인다는 passport 모듈을 사용해보았다.

각종 레퍼런스와 강의를 참고해 만들긴 했는데 정작 구현을 하고도 모듈의 쓰임을 정확하게 모르는 기분이 들어서 조금 더 공부한 내용을 정리하려고 한다.

express 는 설치했다는 가정하에 passport , jwt를 사용하기 위한 모듈 설치
$npm i passport passport-local passport-jwt jwt

passport 모듈이란?

passport는 여권이라는 이름과 같이 서버에서 사용자를 인증하기 위해 사용하는 Node.js용 미들웨어이다. passport는 다양한 인증 기능들(session, jwt 등)을 각 모듈로 패키지화 해 제공하고 있으며 편리하게 인증을 구현할 수 있다. 웹페이지를 이용할 때 로그인, 소셜 로그인을 통해 세션이나 쿠키에 토큰을 발급받고, 인증 가능하다.

구글, 페이스북, 카카오 같은 기존의 SNS 서비스 계정을 이용하여 로그인하는 기능도 해당 모듈로 구현이 가능하다.

passport모듈의 기능

passport.serializeUser과 passport.deserializeUser가 passport의 핵심이다.

serializeUser는 로그인 시 실행되며, req.session 객체에 어떤 데이터를 저장할지 정하는 메서드이다.

serializeUser가 로그인 시에만 실행된다면 deserializeUser는 매 요청 시 실행된다. passport.session 미들웨어가 이 메서드를 호출하는데, serializeUser의 done의 두 번째 인수로 넣었던 데이터가 곧 deserializeUser의 매개변수가 된다.

조금 전 serializeUser에서 세션에 저장했던 아이디 등을 받아 데이터베이스에서 사용자 정보를 조회한다. 조회한 정보를 req.user에 저장하므로 앞으로 req.user를 통해 로그인한 사용자의 정보를 가져올 수 있다.

즉, serializeUser는 사용자 정보 객체를 세션에 아이디로 저장하고, deserializeUser는 세션에 저장한 아이디를 통해 사용자 정보 객체를 불러온다. 이는 세션에 불필요한 데이터를 담는 것을 방지하게 해준다.

profile
더 많은 사람들이 더 좋은 정보와 서비스를 누릴 수 있게!!
post-custom-banner

0개의 댓글