import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' import { isIpAllowed, getClientIp } from '@/lib/ip-utils' export function middleware(request: NextRequest) { // 檢查是否啟用IP白名單 const enableIpWhitelist = process.env.ENABLE_IP_WHITELIST === 'true' if (!enableIpWhitelist) { return NextResponse.next() } // 獲取客戶端IP - 使用與API相同的邏輯 const clientIp = getClientIp(request) // 獲取允許的IP列表 const allowedIps = process.env.ALLOWED_IPS || '' // 調試信息 console.log(`[Middleware] IP檢測: ${clientIp}, 路徑: ${request.nextUrl.pathname}`) console.log(`[Middleware] 白名單狀態: ${enableIpWhitelist}`) console.log(`[Middleware] 允許的IP: ${allowedIps}`) // 檢查IP是否被允許 if (!isIpAllowed(clientIp, allowedIps)) { // 記錄被拒絕的訪問 console.warn(`[Middleware] Access denied for IP: ${clientIp} - Path: ${request.nextUrl.pathname}`) console.warn(`[Middleware] 允許的IP列表: ${allowedIps}`) // 返回403禁止訪問頁面 return new NextResponse( `
很抱歉,您的IP地址不在允許的訪問列表中。
如果您認為這是一個錯誤,請聯繫系統管理員。