0

我正在使用 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 用户文档

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

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

4

1 回答 1

0

NextAuth.js 维护者在这里。从您的代码片段看来,您使用的是 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

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

于 2021-09-18T10:21:36.817 回答