跳至內容
要從 NextAuth.js v4 遷移嗎?請閱讀 我們的遷移指南.

電子郵件供應商

此登入機制首先由使用者在登入表單上提供其電子郵件地址。然後,系統會將驗證權杖傳送到所提供的電子郵件地址。使用者有 24 小時的時間點擊電子郵件內文中的連結以「使用」該權杖並註冊他們的帳戶,否則驗證權杖將過期,他們必須要求新的權杖。

💡

電子郵件供應商可以搭配 JSON Web Tokens資料庫 工作階段一起使用。無論您選擇哪一種,您仍然必須設定資料庫,以便 Auth.js 可以儲存驗證權杖,並在使用者嘗試登入時查詢這些權杖。不使用資料庫無法啟用電子郵件供應商。

供應商

Forward Email 設定

資料庫轉接器

請確保您已設定資料庫轉接器,如前所述,無密碼登入需要資料庫才能運作,因為需要儲存驗證權杖。

設定環境變數

如果格式如上例所示,Auth.js 會自動擷取這些變數。如果需要,您也可以使用不同的環境變數名稱,但這樣您需要手動將它們傳遞給供應商。

.env
AUTH_FORWARDEMAIL_KEY=abc123

設定供應商

讓我們在 Auth.js 設定中啟用 ForwardEmail 作為登入選項。您必須從套件匯入 ForwardEmail 供應商,並將其傳遞給我們稍早在 Auth.js 設定檔中設定的供應商陣列

./auth.ts
import NextAuth from "next-auth"
import ForwardEmail from "next-auth/providers/forwardemail"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [ForwardEmail],
})

新增登入按鈕

接下來,我們可以在應用程式的某個地方(例如導覽列)新增登入按鈕。這會將一封電子郵件傳送給使用者,其中包含登入的魔法連結。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async (formData) => {
        "use server"
        await signIn("forwardemail", formData)
      }}
    >
      <input type="text" name="email" placeholder="Email" />
      <button type="submit">Signin with Forward Email</button>
    </form>
  )
}

登入

啟動您的應用程式,一旦使用者輸入他們的電子郵件並點擊登入按鈕,他們將被重新導向到一個頁面,要求他們檢查電子郵件。當他們點擊電子郵件中的連結時,他們將會登入。

請查看我們的自訂魔法連結電子郵件,以了解如何變更使用者收到的登入電子郵件的外觀和風格。

如需有關此供應商的更多資訊,請前往Forward Email 文件頁面

Resend 設定

資料庫轉接器

請確保您已設定資料庫轉接器,如前所述,無密碼登入需要資料庫才能運作,因為需要儲存驗證權杖。

設定環境變數

如果格式如上例所示,Auth.js 會自動擷取這些變數。如果需要,您也可以使用不同的環境變數名稱,但這樣您需要手動將它們傳遞給供應商。

.env
AUTH_RESEND_KEY=abc123

設定供應商

讓我們在 Auth.js 設定中啟用 Resend 作為登入選項。您必須從套件匯入 Resend 供應商,並將其傳遞給我們稍早在 Auth.js 設定檔中設定的供應商陣列

./auth.ts
import NextAuth from "next-auth"
import Resend from "next-auth/providers/resend"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [Resend],
})

新增登入按鈕

接下來,我們可以在應用程式的某個地方(例如導覽列)新增登入按鈕。這會將一封電子郵件傳送給使用者,其中包含登入的魔法連結。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async (formData) => {
        "use server"
        await signIn("resend", formData)
      }}
    >
      <input type="text" name="email" placeholder="Email" />
      <button type="submit">Signin with Resend</button>
    </form>
  )
}

登入

啟動您的應用程式,一旦使用者輸入他們的電子郵件並點擊登入按鈕,他們將被重新導向到一個頁面,要求他們檢查電子郵件。當他們點擊電子郵件中的連結時,他們將會登入。

請查看我們的自訂魔法連結電子郵件,以了解如何變更使用者收到的登入電子郵件的外觀和風格。

如需有關此供應商的更多資訊,請前往Resend 文件頁面

Sendgrid 設定

資料庫轉接器

請確保您已設定資料庫轉接器,如前所述,無密碼登入需要資料庫才能運作,因為需要儲存驗證權杖。

設定環境變數

如果格式如上例所示,Auth.js 會自動擷取這些變數。如果需要,您也可以使用不同的環境變數名稱,但這樣您需要手動將它們傳遞給供應商。

.env
AUTH_SENDGRID_KEY=abc123

設定供應商

讓我們在 Auth.js 設定中啟用 Sendgrid 作為登入選項。您必須從套件匯入 Sendgrid 供應商,並將其傳遞給我們稍早在 Auth.js 設定檔中設定的供應商陣列

./auth.ts
import NextAuth from "next-auth"
import Sendgrid from "next-auth/providers/sendgrid"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [Sendgrid],
})

新增登入按鈕

接下來,我們可以在應用程式的某個地方(例如導覽列)新增登入按鈕。這會將一封電子郵件傳送給使用者,其中包含登入的魔法連結。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async (formData) => {
        "use server"
        await signIn("sendgrid", formData)
      }}
    >
      <input type="text" name="email" placeholder="Email" />
      <button type="submit">Signin with Sendgrid</button>
    </form>
  )
}

登入

啟動您的應用程式,一旦使用者輸入他們的電子郵件並點擊登入按鈕,他們將被重新導向到一個頁面,要求他們檢查電子郵件。當他們點擊電子郵件中的連結時,他們將會登入。

請查看我們的自訂魔法連結電子郵件,以了解如何變更使用者收到的登入電子郵件的外觀和風格。

如需有關此供應商的更多資訊,請前往Sendgrid 文件頁面

Nodemailer 設定

安裝 nodemailer

Auth.js 不包含 nodemailer 作為相依性,因此如果您想使用 Nodemailer 供應商,則需要自行安裝。

npm install nodemailer

您需要存取 SMTP 伺服器,最好是來自已知可與 nodemailer 搭配使用的服務之一。或者,Nodemailer 也支援其他傳輸機制

資料庫轉接器

請確保您已設定資料庫轉接器,如前所述,魔法連結登入需要資料庫才能運作,因為需要儲存驗證權杖。

SMTP 傳輸設定

設定 SMTP 伺服器連線有兩種方式:使用連線字串或設定物件。

.env
EMAIL_SERVER=smtp://username:password@smtp.example.com:587
EMAIL_FROM=noreply@example.com
./auth.ts
import NextAuth from "next-auth"
import Nodemailer from "next-auth/providers/nodemailer"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [
    Nodemailer({
      server: process.env.EMAIL_SERVER,
      from: process.env.EMAIL_FROM,
    }),
  ],
})

登入按鈕

接下來,我們可以在應用程式的某處(例如導覽列)新增一個登入按鈕。這會將使用者轉送到 Auth.js 的預設登入頁面。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async () => {
        "use server"
        await signIn()
      }}
    >
      <button type="submit">Sign In</button>
    </form>
  )
}

登入

啟動您的應用程式,點擊我們剛新增的登入按鈕,您應該會看到 Auth.js 內建的登入頁面,並可選擇使用電子郵件登入。

Screenshot of sign in page

輸入您的電子郵件並點擊「使用電子郵件登入」。您應該會收到來自 Auth.js 的電子郵件,點擊該郵件後,您應該會被重新導向至您的應用程式,並已完成驗證。

有關此供應商的更多資訊,請前往Nodemailer 文件頁面

Postmark 設定

資料庫介面卡

請確保您已設定資料庫轉接器,如前所述,無密碼登入需要資料庫才能運作,因為需要儲存驗證權杖。

設定環境變數

如果格式如上例所示,Auth.js 會自動擷取這些變數。如果需要,您也可以使用不同的環境變數名稱,但這樣您需要手動將它們傳遞給供應商。

.env
AUTH_POSTMARK_KEY=abc123

設定供應商

讓我們在 Auth.js 設定中啟用 Postmark 作為登入選項。您必須從套件匯入 Postmark 供應商,並將其傳遞給我們先前在 Auth.js 設定檔中設定的 providers 陣列。

./auth.ts
import NextAuth from "next-auth"
import Postmark from "next-auth/providers/postmark"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [Postmark],
})

新增登入按鈕

接下來,我們可以在應用程式的某個地方(例如導覽列)新增登入按鈕。這會將一封電子郵件傳送給使用者,其中包含登入的魔法連結。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async (formData) => {
        "use server"
        await signIn("postmark", formData)
      }}
    >
      <input type="text" name="email" placeholder="Email" />
      <button type="submit">Signin with Postmark</button>
    </form>
  )
}

登入

啟動您的應用程式,一旦使用者輸入他們的電子郵件並點擊登入按鈕,他們將被重新導向到一個頁面,要求他們檢查電子郵件。當他們點擊電子郵件中的連結時,他們將會登入。

請查看我們的自訂魔術連結電子郵件,了解如何變更使用者接收以進行登入的電子郵件的外觀和風格。

有關此供應商的更多資訊,請前往Postmark 文件頁面

Mailgun 設定

資料庫介面卡

請確保您已設定資料庫轉接器,如前所述,無密碼登入需要資料庫才能運作,因為需要儲存驗證權杖。

設定環境變數

如果格式如上例所示,Auth.js 會自動擷取這些變數。如果需要,您也可以使用不同的環境變數名稱,但這樣您需要手動將它們傳遞給供應商。

.env
AUTH_MAILGUN_KEY=abc123

設定供應商

讓我們在 Auth.js 設定中啟用 Mailgun 作為登入選項。您必須從套件匯入 Mailgun 供應商,並將其傳遞給我們先前在 Auth.js 設定檔中設定的 providers 陣列。

./auth.ts
import NextAuth from "next-auth"
import Mailgun from "next-auth/providers/mailgun"
 
export const { handlers, auth, signIn, signOut } = NextAuth({
  providers: [Mailgun],
})

新增登入按鈕

接下來,我們可以在應用程式的某個地方(例如導覽列)新增登入按鈕。這會將一封電子郵件傳送給使用者,其中包含登入的魔法連結。

./components/sign-in.tsx
import { signIn } from "../../auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async (formData) => {
        "use server"
        await signIn("mailgun", formData)
      }}
    >
      <input type="text" name="email" placeholder="Email" />
      <button type="submit">Signin with Mailgun</button>
    </form>
  )
}

登入

啟動您的應用程式,一旦使用者輸入他們的電子郵件並點擊登入按鈕,他們將被重新導向到一個頁面,要求他們檢查電子郵件。當他們點擊電子郵件中的連結時,他們將會登入。

請查看我們的自訂魔術連結電子郵件,了解如何變更使用者接收以進行登入的電子郵件的外觀和風格。

有關此供應商的更多資訊,請前往Mailgun 文件頁面

Auth.js © Balázs Orbán 和團隊 -2024