diff --git a/middleware.ts b/middleware.ts index 805d590..cdff693 100644 --- a/middleware.ts +++ b/middleware.ts @@ -44,11 +44,21 @@ export async function middleware(request: NextRequest) { } } - return await updateSession(request); + // API 라우트는 세션 갱신 불필요 — 각 API에서 독립적으로 인증 처리 + if (pathname.startsWith('/api/')) { + return NextResponse.next(); + } + + // Supabase 세션 갱신 — 실패해도 페이지 접근은 허용 + try { + return await updateSession(request); + } catch { + return NextResponse.next({ request }); + } } export const config = { matcher: [ - '/((?!_next/static|_next/image|favicon.ico|api/telegram/webhook|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)', + '/((?!_next/static|_next/image|favicon.ico|api/|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)', ], }; diff --git a/utils/supabase/middleware.ts b/utils/supabase/middleware.ts index b8b2d6e..0ec051b 100644 --- a/utils/supabase/middleware.ts +++ b/utils/supabase/middleware.ts @@ -28,8 +28,12 @@ export async function updateSession(request: NextRequest) { { cookies: cookieMethods } ); - // 세션 갱신 (IMPORTANT: getUser()는 반드시 호출해야 함) - await supabase.auth.getUser(); + // 세션 갱신 — 실패해도 응답 반환 (외부 네트워크 오류로 hang 방지) + try { + await supabase.auth.getUser(); + } catch { + // Supabase 일시 오류 시 세션 갱신 생략하고 통과 + } return supabaseResponse; }