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
'{Back-end} > Node.js | Nest.js' 카테고리의 다른 글
[Node.js] Express 기본 설정 및 웹 개발 (0) | 2025.04.25 |
---|---|
[Node.js] 여러가지 초기 셋팅 및 DB 설정 (0) | 2024.11.21 |