コンテンツへスキップ
NextAuth.js v4からの移行?こちらを ご確認ください.
はじめにセッション管理サインインとサインアウト

サインインとサインアウトの処理

ユーザーにサインインしてもらうには、少なくとも1つの認証方法を設定する必要があります。その後、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構成からエクスポートされたsignout関数を呼び出すボタンを作成できます。

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 and Team -2024