修复认证循环重定向问题

This commit is contained in:
2025-05-12 10:58:17 +08:00
parent ea211e85a9
commit 52c0184482
4 changed files with 50 additions and 45 deletions

View File

@@ -28,24 +28,23 @@ export async function middleware(request: NextRequest) {
console.log('❌ 刷新访问令牌失败', e)
}
// 如果刷新访问令牌成功,则继续访问之前的页面
const isLogin = request.nextUrl.pathname === '/login'
const redirect = request.nextUrl.searchParams.get('redirect')
if (isLogin && redirect) {
console.log('redirect to', redirect)
return NextResponse.redirect(`${request.nextUrl.origin}${redirect}`)
// 验证访问令牌
if (request.cookies.get('auth_token')) {
// 如果刷新访问令牌成功,则继续访问之前的页面
const isLogin = request.nextUrl.pathname === '/login'
const hasRedirect = request.nextUrl.searchParams.get('redirect')
if (isLogin && hasRedirect) {
return NextResponse.redirect(`${request.nextUrl.origin}${hasRedirect}`)
}
}
// 没有访问令牌不允许访问 admin 页面
const isAdmin = [
RegExp(`^/admin.*`),
].some(item => item.test(request.nextUrl.pathname))
const accessToken = request.cookies.get('auth_token')
if (isAdmin && !accessToken) {
console.log('🚗🚗🚗🚗🚗 非正常重定向 🚗🚗🚗🚗🚗')
return NextResponse.redirect(`${request.nextUrl.origin}/login?redirect=${request.nextUrl.pathname}`)
else {
// 没有访问令牌不允许访问 admin 页面
const isAdmin = request.nextUrl.pathname.startsWith('/admin')
if (isAdmin) {
return NextResponse.redirect(`${request.nextUrl.origin}/login?redirect=${request.nextUrl.pathname}`)
}
}
return NextResponse.next({request})