diff options
Diffstat (limited to 'app/api/auth')
| -rw-r--r-- | app/api/auth/[...nextauth]/route.ts | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts index d6ec807f..58566cd6 100644 --- a/app/api/auth/[...nextauth]/route.ts +++ b/app/api/auth/[...nextauth]/route.ts @@ -449,12 +449,35 @@ export const authOptions: NextAuthOptions = { }, async redirect({ url, baseUrl }) { + // 상대 경로인 경우 baseUrl과 결합 if (url.startsWith("/")) { return `${baseUrl}${url}`; } - else if (new URL(url).origin === baseUrl) { - return url; + + // 절대 URL인 경우: 허용된 도메인 목록 확인 + try { + const urlObj = new URL(url); + const allowedDomains = [ + "shidataroom.com", + "partners.sevcp.com", + "sevcp.com", + "localhost" // 개발 환경 + ]; + + // 허용된 도메인이면 그대로 반환 + if (allowedDomains.includes(urlObj.hostname)) { + return url; + } + + // 기존 로직: baseUrl과 origin이 같으면 허용 + if (urlObj.origin === baseUrl) { + return url; + } + } catch { + console.error('Invalid redirect URL:', url); } + + // 허용되지 않은 URL은 baseUrl로 리다이렉트 return baseUrl; }, }, |
