| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 책 원씽
- 카뷰 수익 인증
- 엑셀 프린트하기
- HTML
- 카카오뷰 성장
- 도서 원씽
- 성공비법
- 위드굿즈 굿즈샵
- ppt 도형 색
- 30일 글쓰기
- 카카오뷰 부업
- 카카오뷰 초보
- 카카오뷰 온라인 수익화
- express.js 환경 셋팅
- 자기관리
- 위드굿즈
- Git 팀 작업
- ppt 다이어그램
- Axios 라이브러리
- 이석증
- git 협업하기
- 카카오뷰 탭이동
- 원씽
- 성공에 대한 거짓말
- 카카오뷰N잡
- 카카오뷰 수익
- 실시간 통신
- CSS
- 웹기초
- 엑셀 기초 함수
- Today
- Total
김데이의 개발공부
[ TIL ] Day 42 - PASSPORT (node.js) 기본 문법(세션, 토큰) 본문
[ TIL ] Day 42 - PASSPORT (node.js) 기본 문법(세션, 토큰)
theday365 2025. 11. 24. 18:44🗓️ 수업 일자 : 2025.11.24
✨ 오늘의 수업 평가 : [ HARD ] 지식 폭풍에 휩쓸렸다 🤪🌪️📖
수업 끝나고 열심히 복습 해 왔음에도 불구하고
Passport 모듈로 인증 작업을 새로 시작하니, 아무것도 모르겠.. 완전 생초보로 시작하는 이 기분😵💫
확장성이 좋아서 사용한다고 하는데.. 확장을 안하고 싶은 심정..ㅋㅋㅋㅋㅋㅋ
오늘 OAuth 활용까지 배웠는데, 세션 / 토큰 영역 따라가기도 벅차다.. 🤪
📝 오늘 배운 내용
- PASSPORT 모듈 설명
- Passport 기본 문법 - 세션 & 토큰
0. 세션, 토큰 복습
- Bcrypt 작업은 사용자의 비밀번호를 해싱하는 작업으로 CPU 리소스를 쓰는 작업
⇒ 오래 걸리는 계산 작업이므로 꼭 async & await을 사용하여 비동기로 진행
- 유저의 인증(순수 기능) 작업 : 로그인, 로그아웃 작업에서 세션 또는 토큰의 생성/삭제 작업이 진행
- 서비스 내에서 사용되는 유저 인가 작업 : CRUD 중에서 CUD 작업에서 세션 또는 토큰 정보가 들어간 쿠키 사용, 미들웨어에서 전달 받은 세션 또는 토큰의 정보가 올바른 정보인지 검증 후 서비스 제공
1. PASSPORT 모듈 설명
기본 설명
- Node.js에서 사용하는 모듈로, 사용자 인증을 간단하게 도와주며 미들 웨어로 사용
- Passport에서는 거의 대부분의 OAuth 구현이 가능하고, strategy(전략)로 제공함
공식 홈페이지 : https://www.passportjs.org/
Passport.js
Simple, unobtrusive authentication for Node.js
www.passportjs.org

strategy
- 로그인을 어떤 방식으로 처리할지 정하는 플러그인 같은 모듈
- 로그인 방식을 하나씩 담당하는 Passport부품같은 존재
- google, kakao, Naver등 OAuth 별로 모듈이 존재함
// Strategy 예시 - Google
import { Strategy as GoogleStrategy } from 'passport-google-oauth20';
import { GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET } from '../constants.js';
import prisma from '../prisma.js';
export const googleStrategy = new GoogleStrategy({...},async function(..){...});
Passport-local
- DB에 있는 아이디/비번 기반의 로그인을 위한 완전 기본이 되는 Stratege 제공 패키지
- localStrategy 구문을 통해 로그인 정보를 확인하여 검사(id 유무, 패스워드 유효) 한 뒤 로그인을 허용
- done() : localStrategy 결과를 passport에게 전달하는 콜백 함수
- done(error, user) : error가 있으면 서버 오류로 인증 과정 자체가 실패
- done(null,false) : 아이디 없음, 비번 틀림, 로그인 실패에 사용하는 값으로,
해당 함수가 요청되면 passport가 401 처리를 진행 - done(null, user) : 로그인 성공 시 사용하는 콜백함수
import { Strategy as LocalStrategy } from 'passport-local';
import bcrypt from 'bcrypt';
import prisma from '../prisma.js';
export default new LocalStrategy(
{ usernameField: 'username', passwordField: 'password' },
async (username, password, done) => {
try {
const user = await prisma.user.findUnique({ where: { username } });
if (!user) return done(null, false);
const isValid = await bcrypt.compare(password, user.password);
if (!isValid) return done(null, false);
return done(null, user); // 성공
} catch (err) {
return done(err); // 에러
}
}
);
2. Passport 기본 문법 - 세션 & 토큰
Passport 문법 익히기
- 기본 제공 문법
- passport.initialize() : Passport의 기능을 활성화 시키는 기본 미들웨어, 전역에 사용
- passport.authenticate(localStrategy, {session: optional})
: passport/index.js 파일 등에 passport.use() 로 등록해둔 “전용 Strategy 미들웨어”를 찾아 실행하는 역할
세션 기반으로 운영되므로 토큰에서 사용 시 {session : false}를 인자로 함께 전달 해야함
- 세션 관련 문법
- passport.session() : 세션에 저장 된 userId를 자동으로 읽어와서 deserializeUser를 호출해 req.user 생성
- passport.serializeUser( fn(user,done){..} ) : 정상적으로 인증 과정을 거치면서 user.id만 세션에 저장
- passport.deserializeUser( fn(user,done){..} )
: 쿠키를 통해 전달 받은 세션 ID에 저장 된 userId를 이용하여 DB에서 User 정보를 찾아서 req.user 값을 지정
- 토큰 관련 문법
- passport-jwt, new JwtStrategy : Passport에게 ‘엑세스 토큰을 어떻게 읽고, 어떻게 검증할지’ 알려주는 설정
📃 내일은 뭘 배울까 🤔
- Passport 세션 / 토큰 구조화
- Passport OAuth 구현하기
'코드잇 Node.js(BE) 부트 캠프 > TIL (Today I Learn) 📑' 카테고리의 다른 글
| [ TIL ] Day 44 - 실습 : Express User 기능 구현 with Token (0) | 2025.11.26 |
|---|---|
| [ TIL ] Day 43 - Passport 세션, 토큰 구조화 (0) | 2025.11.25 |
| [ TIL ] Day 41 + 해싱솔트, bcrypt 모듈, 유저 기능 세션 / 토큰 (0) | 2025.11.23 |
| [ TIL ] Day 40 & 41 - 인증과 인가 / 쿠키, 세션, 토큰, OAuth (0) | 2025.11.21 |
| [ TIL ] Day 39 - Git / GitHub 팀 협업하기 (0) | 2025.11.19 |