You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中间件未认证跳转登录异常:登录页无法正常显示

问题解决:Next.js中间件跳转登录页后无法正常显示

问题原因

你的中间件配置会拦截/login路由,导致无限重定向循环:当token不存在时,中间件跳转到/login,但访问/login时,中间件再次检查token(仍然不存在),又触发重定向,浏览器为了终止循环,会显示异常页面(样式缺失或内容无法正常加载)。

修复步骤

1. 修改matcher排除登录页

更新config中的matcher规则,把login加入排除列表,让中间件不拦截登录页请求:

export async function middleware(request: NextRequest) {
  const token = request.cookies.get('token')?.value;
 
  if (token) { // 优化判断:自动处理undefined/空字符串情况
    return NextResponse.next();
  }

  return NextResponse.redirect(new URL('/login', request.url));
}

export const config = {
  matcher: ['/((?!api|_next|.*\\..*|login).*)'],
};

2. 优化token判断逻辑

原代码的token!==undefined仅判断token是否存在,但如果token存在但值为空字符串,也应该跳转到登录页。直接用if (token)可以同时处理undefined和空字符串的情况,逻辑更严谨。

验证效果

修改后,当token不存在时,会正确跳转到/login,且中间件不再拦截登录页的请求,页面可以正常加载静态资源和内容。

内容的提问来源于stack exchange,提问作者Jane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:07:13