Super Kawaii Cute Cat Kaoani
본문 바로가기
{Back-end}/Node.js | Nest.js

[Node.js] passport.js 적용법

by wonee1 2025. 5. 6.
728x90


passport.js란? 

 
Node.js에서 인증(Authentication)을 쉽게 구현할 수 있게 도와주는 미들웨어입니다. 로컬 로그인 소셜 로그인, JWT 인증 등을 구현할 수 있습니다
 
 
💠 passport.js 핵심 개념 요약 
 

Strategy로그인 방식(로컬, 구글, 페이스북 등)을 말함
serializeUser로그인 성공 시 사용자 정보를 세션에 저장하는 방식 정의
deserializeUser세션에서 사용자 정보를 꺼내는 방식 정의
passport.authenticate()실제 인증을 수행하는 미들웨어
passport.use()사용할 로그인 전략 설정 (예: LocalStrategy, JwtStrategy)

 
 
 

🔐 로컬 로그인에서 적용하는 방법 

 
 
1. 설치 

npm install passport passport-local express-session

 
 
2. 설정 (코드 예시) 

passport.use(new LocalStrategy({
  usernameField: 'email',
  passwordField: 'password'
}, async (email, password, done) => {
  const user = await db.users.findOne({ where: { email } });
  if (!user) return done(null, false, { message: '존재하지 않는 사용자' });
  if (user.password !== password) return done(null, false, { message: '비밀번호 틀림' });
  return done(null, user);
}));

passport.serializeUser((user, done) => {
  done(null, user.id); // 세션에 user.id 저장
});

passport.deserializeUser(async (id, done) => {
  const user = await db.users.findByPk(id);
  done(null, user);
});

export default passport;

 
 
3. express에 적용 

import express from 'express';
import session from 'express-session';
import passport from './passport.js';

const app = express();

app.use(session({
  secret: 'your-secret-key',
  resave: false,
  saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());

 
 
4. 로그인 라우트 
 

app.post('/login', passport.authenticate('local', {
  successRedirect: '/home',
  failureRedirect: '/login',
  failureFlash: true
}));

 
 
 

🌐 소셜 로그인에서 적용하는 방법 

 
1. 설치 
 

npm install passport-kakao passport-google-oauth20

 
 
 
2. 적용 
 

passport.use(new KakaoStrategy({
  clientID: process.env.KAKAO_ID,
  callbackURL: "/auth/kakao/callback"
}, async (accessToken, refreshToken, profile, done) => {
  // 사용자 정보 처리
}));
728x90