reactjs 无法使用NextAuth接收其他参数

laik7k3q  于 2023-02-12  发布在  React
关注(0)|答案(1)|浏览(97)

我在NextJS 13应用中使用NextAuth。最初,当用户通过身份验证时,session返回三个参数:nameemailpicture。我的目标是添加一个额外的参数progress,该参数将在用户工作期间更新。
当我在MongoDB中保存注册用户时,我使用NextJS API Route更新用户,并通过PUT请求添加progress参数。但问题是,尽管添加了额外的参数,会话仍然返回相同的三个参数:不含progressnameemailpicture
问题是如何强制会话返回附加参数?
同时,我不确定我是否做得对,因为我试图通过API而不是NextAuth本身添加额外的参数🤔

xdnvmnnf

xdnvmnnf1#

要扩展NextAuth的会话对象,您必须修改会话回调,如下所示:

async session({ session, user }) {
    if (session.user) {
      session.user.id = user.id;
      session.user.progress = user.progress;
    }
    return session;
  },

扩展对象之后,还需要扩展类型。
就像这样:

import type { DefaultSession } from "next-auth";

declare module "next-auth" {
  interface Session {
    userId?: string;
    user?: {
      id: string;
      progress: string;
    } & DefaultSession["user"];
  }
  interface DefaultUser {
    progress: string;
  }
}

更多信息:https://next-auth.js.org/configuration/callbacks

相关问题