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

Next.js 14 应用中认证后redirect重定向至首页失效问题

Next.js认证后重定向失效的排查与修复

以下是针对你代码中重定向问题的排查方向和修复方案:

1. 确认signIn函数的返回值有效性

重定向未触发最可能的原因是signIn(formData)未返回有效的userId,导致代码未进入if (result)分支。

  • 在authenticate函数中添加日志,验证signIn的返回结果:
export async function authenticate(formData: FormData) {
  const result = await signIn(formData);
  console.log('signIn返回结果:', result); // 查看控制台输出
  if (result) {
    createSession(result);
    redirect("/");
  }
}

如果输出为null、undefined或false,需要先修复signIn函数的认证逻辑,确保成功时返回有效的数字类型userId。

2. 修复Cookie的secure配置问题

开发环境下(HTTP协议),secure: true会导致Cookie无法被浏览器保存,进而可能引发后续认证异常,同时也可能间接影响重定向逻辑:
修改session.ts中的Cookie配置:

cookies().set("session", session, {
  httpOnly: true,
  secure: process.env.NODE_ENV === 'production', // 仅生产环境启用secure
  expires: expiresAt,
  path: "/",
});

3. 完善认证失败的分支处理

如果认证失败,函数没有明确的跳转或返回逻辑,页面会停留在原地,容易让你误以为重定向失效。添加认证失败的处理:

export async function authenticate(formData: FormData) {
  const result = await signIn(formData);

  if (result) {
    createSession(result);
    redirect("/");
  } else {
    // 重定向回登录页并携带错误参数
    redirect("/login?error=invalid_credentials");
  }
}

4. 验证Server Actions的基础配置

确保auth.ts中的"use server"指令位于文件最顶部,没有其他代码在它之前,这是Server Actions生效的必要条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:33:33