跳至内容
从 NextAuth.js v4 迁移?阅读 我们的迁移指南.
指南配置 Resend 以进行魔法链接

使用 Resend 的魔法链接

在本教程中,我们将设置 Next.js 应用程序中的 Auth.js,以便能够使用 **Resend** 登录。

魔法链接(也称为“无密码”)身份验证是一种登录方法,它使用包含嵌入在 URL 中的验证令牌的电子邮件。当用户点击该链接时,他们将被重定向到您的 Auth.js 应用程序并登录,只要该验证令牌仍然有效。

本教程使用 Resend 作为无密码电子邮件提供商,使用 Next.js 作为框架。请注意,对于任何 OAuth 提供商或任何框架,**该过程将是相同/非常类似的**,主要区别在于您在所选提供商的仪表板中注册应用程序的方式。

设置 Auth.js

安装 Auth.js 和 Next.js

在本教程中,我们将使用默认的 Auth.js & Next.js 示例应用程序。如果您已经拥有现有的 Next.js 应用程序,它也应该可以工作。如果您没有,请克隆该存储库

git clone https://github.com/nextauthjs/next-auth-example.git && cd next-auth-example

如果您使用的是示例应用程序,Auth.js 已经安装,否则请按照 安装说明 进行操作。

创建服务器配置

接下来,我们将创建主要的 Auth.js 配置文件,其中包含 Auth.js 的必要配置以及动态路由处理程序。

./auth.ts
import NextAuth from "next-auth"
import Resend from "next-auth/providers/resend"
 
export const { handlers, auth } = NextAuth({
  providers: [Resend],
})
app/api/auth/[...nextauth]/route.ts
export { GET, POST } from "@/auth"

由于这是一个 通配符动态路由,它将响应所有相关的 Auth.js API 路由,以便您的应用程序可以使用 OAuth 2 协议与所选 OAuth 提供商进行交互。

添加环境变量

如果您还没有,请创建一个 .env.local 文件,如 安装部分 中所述,并添加以下 Resend API 密钥变量。

.env.local
AUTH_SECRET="changeMe"
 
AUTH_RESEND_KEY=

我们将使用 Resend 开发人员门户网站中适当的密钥填写 AUTH_RESEND_KEY,一旦我们注册了我们的帐户和应用程序。

注册您的应用程序

要能够使用 Resend 发送电子邮件,您需要执行以下两项操作。

  1. 创建 API 密钥
  2. 验证您的域名

API 密钥

您需要在 Resend 上注册一个帐户,然后在主侧边栏中转到 “API 密钥”。在那里,您可以点击 **“创建 API 密钥”**。我们只需要“发送访问权限”。

域名

要验证您的域名,请按照 Resend 文档 进行操作,并在您完成域名设置后返回。

接下来,您需要将 from 地址更新为来自您在 Resend 中配置和验证的域名。

import NextAuth from "next-auth"
import Resend from "next-auth/providers/resend"
 
export const { handlers, auth } = NextAuth({
  providers: [
    Resend({
      from: "[email protected]",
    }),
  ],
})

将所有内容连接在一起

现在我们有了所需的 API 密钥,请将其粘贴到我们之前创建的 .env.local 文件中。

.env.local
AUTH_SECRET="changeMe"
 
AUTH_RESEND_KEY={apiKey}

所有部分都到位后,您现在可以启动本地开发服务器并测试登录过程。

npm run dev

导航到 https://127.0.0.1:3000。您应该看到以下页面

App Start

点击 **“登录”**,您应该被重定向到默认的 Auth.js 登录页面。您可以 自定义此页面 以满足您的需求。接下来,在电子邮件输入字段中输入您的电子邮件地址,然后点击 **“使用 Resend 登录”**。

转到您的电子邮件收件箱,您应该会找到来自 Auth.js 应用程序的电子邮件,其中包含一个标有“登录”的按钮。点击此按钮,您应该会被重定向回您的本地开发应用程序并登录!

GitHub Authentication Success

如果您回到了这里,这意味着一切正常!我们已经完成了整个无密码身份验证流程,以便您的用户可以通过无密码魔法链接登录您的应用程序!

💡

您可以自定义此电子邮件的内容并修改一些其他 Resend 参数。有关更多详细信息,请查看我们的 Resend 提供商 文档页面。

部署

使用 Resend 部署 Auth.js 应用程序不需要任何其他更改。只需确保您已将所有必需的环境变量添加到您的生产环境中。有关更多信息,请参阅 部署页面

Auth.js © Balázs Orbán 和团队 -2024