跳到内容

资源

以下资源应有助于使用 NuxtAuth,并解决在应用程序开发期间经常遇到的一些主题。我们将继续根据我们从社区看到和收到的问题、反馈和问题,扩展更多指南、示例和参考资料:https://discord.gg/VzABbVsqAc

词汇表

我们在本文档中使用了一些术语,这些术语可能并非每位读者都了解。以下是一些术语的解释

  • application / application-side / universal-application: 这指的是您的应用程序中所有 通用渲染 的 Nuxt 代码。简而言之,这意味着该代码在服务器端和客户端都呈现,因此其中的所有 JS 代码都将执行两次。这是一个重要的区别,因为某些东西在服务器端的行为可能与客户端不同。我们使用 application... 来表示将要通用渲染的内容
  • server / server-side: 这指的是您的应用程序中所有仅在您的服务器上运行的 Nuxt 代码。例如,~/server directory 目录中的所有代码都应仅在服务器上运行
  • authentication: 验证某人是否是他们声称的身份,例如,通过要求他们提供用户名和密码,或者要求 Google 验证身份 (OAuth),然后信任其结果
  • provider: 在 NuxAuth 的上下文中可能意味着两件事
    • 您在 NuxtAuth 模块级别选择的身份验证提供程序,通过将 provider.type 键设置为 localrefreshauthjs 之一
    • 您选择与 authjs 模块结合使用的 OAuth 身份验证提供程序

模块概念

这个库的想法是重用 JS 生态系统中已经存在的所有开源实现,而不是从头开始构建我们自己的实现。这个想法诞生于在框架特定的身份验证库的生态系统中进行研究,以找出最先进的 Nuxt 3 身份验证库的最佳实现方法。

在研究过程中,我们清楚地认识到从头开始实现一切将是

  • 大量已被他人开源的工作,
  • 容易出错,因为身份验证有很多复杂性,需要解决才能使其正确,
  • 难以维护,因为身份验证提供程序来来去去,
  • 难以建立初始信任,因为身份验证很重要,不能出错,

为了避免这些问题,而又不会花费太长时间(在此期间让 Nuxt 没有身份验证库),我们决定研究是否可以包装 NextAuth.js,它是 Next.js 生态系统中最受欢迎的身份验证库,并且是一个值得信赖、维护良好的库!

在我们的调查中,我们发现之前有人尝试使 NextAuth.js 与框架无关。这些尝试或多或少已取得成果,到目前为止主要产生了一些 PoC 和示例应用程序。查看这些对于入门非常有帮助。特别是,正确的方向上的重大推动来自

这项工作的主要部分是将所有内容拼凑在一起,解决现有 PoC 中的一些突出问题,在尚不存在任何内容的地方添加新内容,例如,通过查看 NextAuth.js 客户端代码并将其转换为 Nuxt 3 方法来为 useAuth 组合式函数添加新内容。

该模块与 JoaoPedroAS51 合作进行了另一次重大迭代,以使 useAuth 成为同步操作,并从插件而不是 useAuth 组合式函数本身触发会话生命周期。

根据 MIT 许可证发布。