资源
以下资源应有助于使用 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
键设置为local
、refresh
或authjs
之一 - 您选择与
authjs
模块结合使用的 OAuth 身份验证提供程序
- 您在 NuxtAuth 模块级别选择的身份验证提供程序,通过将
模块概念
这个库的想法是重用 JS 生态系统中已经存在的所有开源实现,而不是从头开始构建我们自己的实现。这个想法诞生于在框架特定的身份验证库的生态系统中进行研究,以找出最先进的 Nuxt 3 身份验证库的最佳实现方法。
在研究过程中,我们清楚地认识到从头开始实现一切将是
- 大量已被他人开源的工作,
- 容易出错,因为身份验证有很多复杂性,需要解决才能使其正确,
- 难以维护,因为身份验证提供程序来来去去,
- 难以建立初始信任,因为身份验证很重要,不能出错,
为了避免这些问题,而又不会花费太长时间(在此期间让 Nuxt 没有身份验证库),我们决定研究是否可以包装 NextAuth.js,它是 Next.js 生态系统中最受欢迎的身份验证库,并且是一个值得信赖、维护良好的库!
在我们的调查中,我们发现之前有人尝试使 NextAuth.js 与框架无关。这些尝试或多或少已取得成果,到目前为止主要产生了一些 PoC 和示例应用程序。查看这些对于入门非常有帮助。特别是,正确的方向上的重大推动来自
- NextAuth.js 应用程序示例
- 各种评论、提案,...或此线程,特别感谢 brillout 发起讨论,balazsorban44 为 NextAuth.js 和鼓励讨论,wobsoriano 添加了多种语言的 PoC
这项工作的主要部分是将所有内容拼凑在一起,解决现有 PoC 中的一些突出问题,在尚不存在任何内容的地方添加新内容,例如,通过查看 NextAuth.js 客户端代码并将其转换为 Nuxt 3 方法来为 useAuth
组合式函数添加新内容。
该模块与 JoaoPedroAS51 合作进行了另一次重大迭代,以使 useAuth
成为同步操作,并从插件而不是 useAuth
组合式函数本身触发会话生命周期。