【问题标题】:NextAuth is not saving Oauth users according to MONGOOSE SchemaNextAuth 没有根据 MONGOOSE Schema 保存 Oauth 用户
【发布时间】:2021-11-12 17:08:43
【问题描述】:

我正在使用 nextjs 构建一个 Web 应用程序,NextAuth 用于身份验证,mongoDB 使用 mongoose 作为数据库。 我在 [...nextauth].js 路径中实现了两个提供程序:Google 和 Github。另外,我已经通过连接 URL 将它连接到数据库。现在我期待的是根据我在 User 模型中提供的 Mongoose 模式自动保存用户。 问题是 Google 用户是根据架构保存的,而 Github 用户不是。

我有两个问题:

  1. 这是将 NextAuth 连接到我已经连接的 Mongoose 实例的正确方法吗?
  2. 对此行为的解释是什么?与 Github 相比,为什么 google 用户遵守架构。

我尝试阅读 NextAuth 网站中的文档,但找不到任何解决此问题的内容,也找不到任何解释如何使用 mongoose 实现此目的的内容。

配置文件是:

providers: [
      Providers.GitHub({
         clientId: process.env.GITHUBID,
         clientSecret: process.env.GITHUBSECRET,
      }),
      Providers.Google({
         clientId: process.env.GOOGLE_CLIENT_ID,
         clientSecret: process.env.GOOGLE_CLIENT_SECRET,
      }),
   ],
   database: process.env.MONGODB,

来自 github 的用户文档示例: Github user document

来自 Google 的用户文档: Google user document

由于阅读文档对我没有帮助,而且网上没有太多关于这个主题的内容,我很想听听一些指导,告诉我在哪里可以找到更多关于 DB 连接如何与 next-auth 工作的信息以及我该如何明白它。谢谢。

【问题讨论】:

    标签: mongoose next.js next-auth


    【解决方案1】:

    NextAuth.js 维护者在这里。从您的代码 sn-p 看来,您使用的是 v3 版本的 next-auth。

    在这种情况下,next-auth 将在创建用户时仅保存用户配置文件的子集。

    以下是这些字段:https://github.com/nextauthjs/adapters/blob/main/packages/typeorm-legacy/src/models/user.js#L1-L8

    在 v4 中,用户配置文件将简单地由您的提供商的配置文件回调确定。请记住,用户个人资料是根据用户第一次登录的提供商的个人资料创建的。

    https://next-auth.js.org/adapters/models#user

    对于未来的问题,我建议将它们作为问题或讨论在我们的存储库中打开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2021-11-14
      • 2021-05-17
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多