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

如何扩展NextAuth 5.0.0-beta.20版本的User类型

解决NextAuth 5.0.0-beta.20中扩展User类型包含role字段的问题

要让TypeScript识别user对象中的role属性,你需要通过类型扩展覆盖NextAuth的默认类型定义,具体步骤如下:

1. 创建类型声明文件

在项目根目录或types文件夹下新建next-auth.d.ts文件,内容如下:

import NextAuth from "next-auth";

declare module "next-auth" {
  // 扩展User类型,添加role字段
  interface User {
    role: string; // 可根据实际需求定义更具体的类型,比如 'admin' | 'user' | 'moderator'
  }

  // 同步扩展Session中的User类型,确保session.user包含role字段
  interface Session {
    user: User;
  }
}

2. 优化session回调的类型(可选但推荐)

去掉回调里的any类型,用扩展后的类型替代,避免类型模糊:

callbacks: {
  async session({ session, user }) {
    if (session && user) {
      session.user.id = user.id;
      session.user.role = user.role;
    }
    return session;
  },
},

3. 确认TypeScript配置生效

检查tsconfig.json的include数组,确保包含你的类型声明文件路径,示例:

{
  "include": [
    "next-env.d.ts",
    "**/*.ts",
    "**/*.tsx",
    "types/**/*.d.ts" // 若声明文件在types目录下需添加此项
  ]
}

完成以上操作后重启开发服务器,useSession()返回的user对象就能正确识别role属性了。

内容的提问来源于stack exchange,提问作者Chris Hunter-Johnson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 09:57:02