[Express] 유저 인증 미들웨어

2025. 5. 7. 19:46·Development/Back-end

미들웨어를 사용하기 전에 미들웨어의 정의부터 어떻게, 왜 적용하는지 알고 가자.

 

1. 미들웨어 정의

요청과 응답 사이에서 실행되는 함수로 요청을 가공, 검증하거나 특정 작업을 처리한 후 응답을 반환하기 전에 처리를 수행한다.

순차적으로 실행되며, 각 미들웨어는 요청과 응답 객체를 수행하거나 요청을 거부하고 에러를 반환할 수 있다.

 

2. 미들웨어의 활용

  1. 클라이언트 요청 수신
  2. 요청 처리 => 필요시 응답 반환하거나 다음 미들웨어로
  3. 미들웨어 처리 후 라우터 실행
  4. 라우터 처리 결과를 응답으로 반환

 

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
'Development/Back-end' 카테고리의 다른 글
  • [Express] 알리고 API 를 이용한 문자 서비스 예제
  • [Express] 게시글 관리 미들웨어 (express-validator)
  • [Back-end] JWT(JSON Web Token)
  • [Spring Boot] 간단한 게시글 CRUD
knhye
knhye
  • 전체
    오늘
    어제
  • knhye
    3n1hye_
    knhye
  • 링크

    • GitHub
    • 분류 전체보기 (61)
      • Development (28)
        • Back-end (21)
        • DB (3)
        • CS (4)
      • Algorithm (6)
      • DevOps (10)
        • git (1)
        • Cloud Platform (5)
        • CICD (1)
        • Cloud Native (2)
      • Internet (2)
      • 매일메일 (6)
      • 회고 (5)
        • Capstone (2)
        • Hackathon (1)
        • 2025 (2)
      • 자격증 (1)
      • 블로그 리딩 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
knhye
[Express] 유저 인증 미들웨어
상단으로

티스토리툴바