미들웨어를 사용하기 전에 미들웨어의 정의부터 어떻게, 왜 적용하는지 알고 가자.
1. 미들웨어 정의
요청과 응답 사이에서 실행되는 함수로 요청을 가공, 검증하거나 특정 작업을 처리한 후 응답을 반환하기 전에 처리를 수행한다.
순차적으로 실행되며, 각 미들웨어는 요청과 응답 객체를 수행하거나 요청을 거부하고 에러를 반환할 수 있다.
2. 미들웨어의 활용
- 클라이언트 요청 수신
- 요청 처리 => 필요시 응답 반환하거나 다음 미들웨어로
- 미들웨어 처리 후 라우터 실행
- 라우터 처리 결과를 응답으로 반환
3. 왜 필요한가?
- 여러 라우터에서 동일한 기능을 하나의 미들웨어에서 처리 가능 (재사용성)
- 요청 처리 순서 명확, 특정 조건 만족하는지 확인하는 작업을 일관되게 수행 (처리 일관성)
- 민감 데이터 보호 가능 (보안)
- 중복 코드 없이 일관된 에러 처리
👉 서버의 유지 보수성을 높이고 기능을 모듈화 할 수 있다!
4. 유저 인증 미들웨어
사용자 인증 요청을 보낼 때마다 토큰을 확인하고 유효한지 확인 후 요청을 통과시키는 유저 인증 미들웨어를 작성해봤다.
import { verify } from "jsonwebtoken"
const authMiddleware = (req, res, next) => {
const token = req.header("Authorization")
// Authorization 헤더 확인
if (!token || !token.startsWith("Bearer ")) {
return res.status(401).json({
message: "인증 실패.",
})
}
try {
// Bearer 제거 후 토큰 추출
const actualToken = token.split(" ")[1]
// 토큰 검증
const decoded = verify(actualToken, process.env.JWT_SECRET)
} catch (error) {
res.status(401).json({
message: "유효하지 않은 토큰입니다.",
error: error.message,
})
}
// 사용자 정보 요청 객체에 저장
req.user = decoded
next()
}
export default authMiddleware

감사합니다 (o゚v゚)ノ
'Development > Back-end' 카테고리의 다른 글
| [Express] 알리고 API 를 이용한 문자 서비스 예제 (0) | 2025.05.19 |
|---|---|
| [Express] 게시글 관리 미들웨어 (express-validator) (0) | 2025.05.07 |
| [Back-end] JWT(JSON Web Token) (0) | 2025.03.14 |
| [Spring Boot] 간단한 게시글 CRUD (0) | 2025.02.26 |
| [Back-end] 서블릿과 JSP (0) | 2025.02.24 |