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

NextAuth中Credentials登录后useSession无法获取用户信息求助

解决NextAuth Credentials登录后useSession无法获取用户详情的问题

问题核心是Credentials登录流程中,用户信息没有被正确注入到session对象里,按以下步骤排查修复:

1. 检查Credentials Provider的authorize回调

验证用户凭证后,必须返回包含name、email等所需字段的用户对象,否则后续流程无法获取这些信息:

// [...nextauth].js
import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";

export default NextAuth({
  providers: [
    CredentialsProvider({
      name: "Credentials",
      credentials: {
        username: { label: "Username", type: "text" },
        password: { label: "Password", type: "password" },
      },
      async authorize(credentials) {
        // 替换为你的实际用户验证逻辑(比如从数据库查询)
        const user = await yourUserModel.findOne({
          where: { username: credentials?.username }
        });

        // 验证密码(实际项目请用bcrypt等加密库对比)
        if (user && credentials?.password === user.password) {
          // 返回包含核心用户信息的对象
          return { id: user.id, name: user.name, email: user.email };
        }

        // 验证失败返回null
        return null;
      },
    }),
    // 你的Google Provider配置...
  ],
  // 后续回调配置...
});

2. 配置jwt和session回调

NextAuth默认通过JWT管理会话,需要确保用户信息被存入JWT并同步到session对象中:

// 在[...nextauth].js的NextAuth配置里添加callbacks
callbacks: {
  async jwt({ token, user }) {
    // 用户首次登录时,将authorize返回的用户信息存入token
    if (user) {
      token.id = user.id;
      token.name = user.name;
      token.email = user.email;
    }
    return token;
  },
  async session({ session, token }) {
    // 将token中的用户信息同步到session.user
    if (token) {
      session.user.id = token.id;
      session.user.name = token.name;
      session.user.email = token.email;
    }
    return session;
  },
},

3. 验证Session结构

在组件中打印session确认字段是否存在,帮助定位问题:

const { data: session } = useSession();
console.log("当前会话信息:", session);

如果Credentials登录后session.user缺少name,优先检查authorize是否返回了该字段,再排查jwt/session回调的赋值逻辑。

4. 确认Session策略配置

NextAuth默认使用jwt会话策略,无需额外修改;如果手动设置了database策略,需确保用户表包含name等字段,且会话表正确关联用户信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:25:02