跳至內容
從 NextAuth.js v4 遷移?請閱讀 我們的遷移指南.
開始使用工作階段管理登入與登出

處理登入和登出

要讓使用者登入,請確定您已設定至少一種驗證方法。然後您需要建立一個按鈕,從您的 Auth.js 框架套件呼叫登入函式。

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

您也可以將供應商傳遞給 signIn 函式,這將嘗試直接使用該供應商登入。否則,當在您的應用程式中按一下此按鈕時,使用者將被重新導向到設定的登入頁面。如果您沒有設定自訂登入頁面,使用者將被重新導向到 /[basePath]/signin 的預設登入頁面。

Default Sign-in Page

驗證成功後,使用者將被重新導向回他們開始登入的頁面。如果您希望使用者在登入後被重新導向到其他地方(例如 /dashboard),您可以在登入選項中將目標 URL 作為 redirectTo 傳遞。

app/components/signin-button.tsx
import { signIn } from "@/auth.ts"
 
export function SignIn() {
  return (
    <form
      action={async () => {
        "use server"
        await signIn("github", { redirectTo: "/dashboard" })
      }}
    >
      <button type="submit">Sign in</button>
    </form>
  )
}

登出

登出與登入的方式類似。大多數框架也都提供用戶端和伺服器端的登出方法。

若要使用表單動作登出使用者,您可以建立一個按鈕,呼叫從您的 Auth.js 設定匯出的登出函式。

app/components/signout-button.tsx
import { signOut } from "@/auth.ts"
 
export function SignOut() {
  return (
    <form
      action={async () => {
        "use server"
        await signOut()
      }}
    >
      <button type="submit">Sign Out</button>
    </form>
  )
}
💡

請注意,當在 Auth.js 應用程式中登出像 GitHub 這樣的 OAuth 供應商時,使用者不會在其他地方登出 GitHub。

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