🥰

Better Authを使ってみた

2025/02/01に公開

概要

Better Authの構造としては、単一のエンドポイントを建てて、そこにリクエストを投げていく感じ。
サーバー、クライアントどちらからもリクエストを投げることができる。
また、プラグインを使って機能拡張できる。

主な機能

  • メールアドレス・パスワード認証
  • OAuth
  • 匿名
  • マジックリンク
    など...

注目ポイント

モダンなフレームワークで使える

Next/NuxtJS
Sveltekit
Remix(RRv7)
Astro
Solid Start
TanStack Start
Hono
Expo
で使えるらしい。

ドキュメント充実&コミュニティ(discord)がある

Discord

ClientメソッドがTanStack的

onErrorやonSuccessがあるのでloadingの制御を書きやすい。

https://www.better-auth.com/docs/concepts/client#fetch-options

Userテーブルにカラムを追加できる

roleなどの追加カラムを設定できる。typeの補完も効くようになる。

https://www.better-auth.com/docs/concepts/database#extending-core-schema

フック

APIリクエスト前、後にカスタムロジックを挿入できる。
ctx.pathでエンドポイントパスを取得して、場合分けすることでより柔軟に制御できる。

https://www.better-auth.com/docs/concepts/hooks

メール送信処理

sendVerificationEmail・sendResetPassword、sendDeleteAccountVerificationとかがあるので、メール送信でresendとか使える。

OAuthのprofileマッピング

mapProfileToUserでプロバイダーから取得した値をマッピングできる

https://www.better-auth.com/docs/concepts/oauth#other-provider-configurations

OAuth認証した後...

newUserCallbackURLで新規ユーザーが遷移するページ、callbackURLで既存ユーザーが遷移するページを指定できる

https://www.better-auth.com/docs/basic-usage#signin-with-social-providers

アカウントリンクができる

アカウントリンクの有効化・無効化ができる。ログインしている時に手動でアカウント連携したい時もメソッドある。
パスワードがない時も、追加でパスワード作成とかできる。

https://www.better-auth.com/docs/concepts/users-accounts#account-linking

パスワード忘れ、メール検証など...

メールアドレス検証、パスワード忘れ、パスワード更新、メール変更、ユーザー削除などの機構が備わっている。

https://www.better-auth.com/docs/concepts/users-accounts#update-user

セッションについて

セッションの一覧表示、revokeができる

https://www.better-auth.com/docs/concepts/session-management

Adminプラグイン

Adminプラグインを使えば、ユーザー一覧、ユーザー削除、ユーザーのban、ユーザーのImpersonateができる。

https://www.better-auth.com/docs/plugins/admin

個人的な感想

next-authよりもビッグラブ

Discussion