From 96cebb618ad3fa2f1da6b39e6aa1f20116ebde7b Mon Sep 17 00:00:00 2001 From: doyou1 Date: Sat, 24 Jan 2026 23:16:09 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20/login=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20=EB=B6=84=EB=A6=AC?= =?UTF-8?q?=EB=A5=BC=20=ED=86=B5=ED=95=9C=20=EC=A0=91=EA=B7=BC=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 기존에 /sign-up과 /login 경로를 단일 조건문으로 처리하던 방식을 각각 독립적인 블록으로 분리하여 /login 페이지 접근 시 발생하던 무반응 문제를 해결했습니다. 변경사항: - /sign-up과 /login 경로 처리 로직을 별도 if 블록으로 분리 - 각 경로별 인증 상태(accessToken, memberId) 검증을 독립적으로 수행 - 로그인 완료된 사용자는 두 경로 모두 /home으로 리디렉션 - 미인증 사용자는 각 페이지로 정상 진입 가능하도록 처리 이슈: qnrr-801 --- src/middleware.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index 1dd15e3e..d41dc845 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -65,7 +65,6 @@ export async function middleware(request: NextRequest) { const hasAccessToken = request.cookies.has('accessToken'); const hasMemberId = request.cookies.has('memberId') && isNumeric(memberId); - // 랜딩 페이지(/)는 인증 체크를 하지 않음 if (request.nextUrl.pathname === '/') { // 이미 로그인된 사용자가 랜딩 페이지에 접근하면 1:1 스터디 화면인 /home 으로 리디렉션시키는 코드 @@ -82,9 +81,7 @@ export async function middleware(request: NextRequest) { // 회원가입 페이지는 accessToken만 체크 (memberId는 회원가입 후에 생성됨) if ( - request.nextUrl.pathname === '/sign-up' || - request.nextUrl.pathname === '/login' - ) { + request.nextUrl.pathname === '/sign-up') { if (hasAccessToken && hasMemberId) { // 이미 회원가입 완료된 사용자는 홈으로 리디렉션 const mainUrl = new URL('/home', request.url); @@ -101,6 +98,19 @@ export async function middleware(request: NextRequest) { return NextResponse.next(); } + if ( + request.nextUrl.pathname === '/login' + ) { + if (hasAccessToken && hasMemberId) { + // 이미 회원가입 완료된 사용자는 홈으로 리디렉션 + const mainUrl = new URL('/home', request.url); + + return NextResponse.redirect(mainUrl); + } + + return NextResponse.next(); + } + // 다른 모든 페이지는 인증이 필요함 if (!hasAccessToken || !hasMemberId) { const landingUrl = new URL('/', request.url); From fc3fe3669115c555a6ad49d8d49c7a3a5de1eba6 Mon Sep 17 00:00:00 2001 From: doyou1 Date: Sat, 24 Jan 2026 23:22:45 +0900 Subject: [PATCH 2/2] [-] prettier check --- src/middleware.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index d41dc845..0c49ed31 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -80,8 +80,7 @@ export async function middleware(request: NextRequest) { } // 회원가입 페이지는 accessToken만 체크 (memberId는 회원가입 후에 생성됨) - if ( - request.nextUrl.pathname === '/sign-up') { + if (request.nextUrl.pathname === '/sign-up') { if (hasAccessToken && hasMemberId) { // 이미 회원가입 완료된 사용자는 홈으로 리디렉션 const mainUrl = new URL('/home', request.url); @@ -98,9 +97,7 @@ export async function middleware(request: NextRequest) { return NextResponse.next(); } - if ( - request.nextUrl.pathname === '/login' - ) { + if (request.nextUrl.pathname === '/login') { if (hasAccessToken && hasMemberId) { // 이미 회원가입 완료된 사용자는 홈으로 리디렉션 const mainUrl = new URL('/home', request.url);