728x90
1. Passport란 무엇인가? (Definition)
Passport는 Node.js용 인증(Authentication) 미들웨어입니다.
웹 사이트에서 "이 사용자가 누구인지" 확인하는 절차를 담당하죠. Express에 딱 들어맞게 설계되어 있어서 app.use()로 간편하게 연결할 수 있습니다.
2. 왜 사용하는가? (Identity & Benefits)
로그인을 직접 구현(Hard Coding)하려고 하면 다음과 같은 복잡한 문제에 직면합니다.
- 비밀번호를 어떻게 안전하게 대조할 것인가?
- 로그인 상태를 세션(Session)에 저장할 것인가, 토큰(JWT)으로 관리할 것인가?
- 구글, 카카오 등 소셜 로그인은 각각 API 형식이 다른데 어떻게 통합할 것인가?
Passport를 쓰면 이 고민이 해결됩니다.
- 단일 인터페이스: 로그인 방식이 바뀌어도 passport.authenticate()라는 함수 하나로 인증을 처리할 수 있습니다.
- 500개 이상의 전략(Strategies): 구글, 페이스북, 트위터는 물론, 지문 인식이나 JWT까지 이미 누군가 만들어둔 '전략' 모듈만 설치하면 바로 쓸 수 있습니다.
- 관심사 분리: 비즈니스 로직(내 앱의 기능)과 인증 로직(로그인)을 깔끔하게 분리할 수 있습니다.
3. 어떻게 사용하는가? (Process)
Passport 사용법은 크게 4단계 설정으로 요약됩니다.
① 설치 및 전략 선택
먼저 기본 모듈과 내가 쓸 전략(예: 로컬 로그인)을 설치합니다.
Bash
npm install passport passport-local
② 전략 설정 (Configuration)
"로그인 시 어떤 값을 확인하고, DB에서 어떻게 사용자를 찾을 것인가"를 정의합니다.
JavaScript
passport.use(new LocalStrategy(
(username, password, done) => {
// 1. DB에서 유저 찾기
// 2. 비밀번호 대조
// 3. 성공하면 done(null, user) 호출
}
));
③ 세션 처리 (Serialization)
로그인 성공 후 "사용자의 어떤 정보(예: ID)"를 세션/쿠키에 저장하고 다시 꺼내올지 설정합니다.
- serializeUser: 로그인 성공 시 세션에 유저 ID 저장.
- deserializeUser: 다음 접속부터 세션의 ID로 DB에서 유저 전체 정보를 조회 (요청 객체 req.user에 담아줌).
④ 라우트 적용 (Implementation)
로그인 경로에 미들웨어로 끼워 넣기만 하면 끝입니다.
JavaScript
app.post('/login',
passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login' })
);
요약하자면
- 무엇? 인증을 대신 처리해주는 비서.
- 왜? 로그인 방식이 아무리 늘어나도 코드가 깔끔하고 안전하니까.
- 어떻게? 전략 설치 -> 전략 설정 -> 세션 설정 -> 라우터에 적용 순서로.
728x90
'기술 학습' 카테고리의 다른 글
| req, res, next 란? (0) | 2026.02.04 |
|---|---|
| 미들웨어(Middleware)란? (0) | 2026.02.04 |
| 엔드포인트란? (0) | 2026.02.02 |
| express.Router() 란? (0) | 2026.01.29 |
| MVC란? (0) | 2026.01.29 |