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

自定义NextAuth CredentialProvider时JWT回调User缺失token字段问题

解决NextAuth JWT回调中User无token字段的类型问题

你需要扩展NextAuth的内置TypeScript类型,默认的User/AdapterUser并不包含你自定义的token字段,所以TypeScript会报错。具体操作如下:

1. 创建类型声明文件

在项目根目录或者src/types文件夹下创建next-auth.d.ts文件(TypeScript会自动识别这类.d.ts声明文件)。

2. 扩展NextAuth的核心类型

在next-auth.d.ts中添加以下代码,把自定义字段加入到对应类型中:

import NextAuth from "next-auth";

// 扩展User类型,添加自定义的token字段
declare module "next-auth" {
  interface User {
    token: string;
    id: string;
  }

  // 可选:如果需要在Session中也获取这些字段,扩展Session类型
  interface Session {
    user: {
      id: string;
      name: string;
      email: string;
      token: string;
    };
    expiration?: number;
  }
}

// 扩展JWT类型,添加你需要存入JWT的字段
declare module "next-auth/jwt" {
  interface JWT {
    email?: string;
    name?: string;
    token?: string;
    id?: string;
    expiration?: number;
  }
}

3. 确保TypeScript识别声明文件

如果你的声明文件放在src/types下,检查tsconfig.json的include配置,确保包含该目录:

{
  "include": ["src/**/*", "src/types/**/*.d.ts"]
}

做完以上操作后,回到你的JWT回调代码,user.token就不会再出现类型错误了——TypeScript现在能识别你自定义的token字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:10:50