34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
import { type NextRequest } from "next/server";
|
|
import { updateSession } from "@/utils/supabase/middleware";
|
|
|
|
/**
|
|
* [Next.js 미들웨어 진입점]
|
|
*
|
|
* 웹사이트의 모든 요청은 이 함수를 가장 먼저 거쳐갑니다.
|
|
* 여기서 로그인 여부를 체크하거나 세션을 갱신합니다.
|
|
*/
|
|
export async function middleware(request: NextRequest) {
|
|
// 방금 만든 updateSession 함수를 호출하여 쿠키/세션을 관리합니다.
|
|
return await updateSession(request);
|
|
}
|
|
|
|
/**
|
|
* [미들웨어 설정]
|
|
*
|
|
* 미들웨어가 '어떤 경로'에서 실행될지, '어떤 경로는 무시할지' 정하는 규칙입니다.
|
|
*/
|
|
export const config = {
|
|
matcher: [
|
|
/*
|
|
* 아래 정규식(Regex)은 다음 파일들을 제외(exclude)하고 모든 요청을 미들웨어로 보냅니다:
|
|
* - _next/static (이미 빌드된 정적 파일들)
|
|
* - _next/image (이미지 최적화 API)
|
|
* - favicon.ico (파비콘 아이콘)
|
|
* - .svg, .png, .jpg 등 이미지 파일들
|
|
*
|
|
* 즉, html 페이지 요청이나 데이터 요청에만 미들웨어가 작동하도록 하여 성능을 최적화합니다.
|
|
*/
|
|
"/((?!_next/static|_next/image|favicon.ico|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)",
|
|
],
|
|
};
|