Core · プラグインを使う · ユーザーと認証

認証

機能

@nocobase/app-plugin-authentication は、Better Auth をアプリに組み込みます。身元、セッション、ブラウザーのクライアント、サーバーのミドルウェアです。だれが呼び出しているかを確定し、その呼び出し元が何をできるかは 権限管理 が決めます。

認証は身元とセッションを提供します。サインインの画面はアプリが所有し、業務上のアクセスは Authorization が決めます。

シナリオと例

例:招待制のメンバーシップ

  1. 必要なサインインの方法は残したまま、セルフ登録を無効にします。
  2. アプリの登録の画面を、その設定とそろえます。
  3. ユーザー管理 でメンバーを招待します。
  4. ゲスト、メンバー、無効なユーザーとして、ページと API を検証します。

組み込みの再設定メールを使うには、auth.passwordReset.enabled を有効にし、アプリの公開アドレスと利用可能なシステムのメールチャネルを設定して、その入口に usePasswordResetCapability() を使います。メールとパスワードによるサインインだけでは、再設定は有効になりません。代わりに、アプリが sendResetPassword を提供することもできます。オリジンをまたぐデプロイでは、オリジンのチェックを回避するのではなく、信頼できるオリジンを設定してください。

開発用のプロンプト(アプリのディレクトリで作業するコーディングエージェント向け):

プレーンテキスト
Authentication を使って、このアプリを招待制にしてください。既存のサインイン、セッション、
拡張の設定は保ってください。サーバーでセルフ登録を無効にし、画面もそろえてください。
再設定を有効にする場合は、公開する前に公開 URL とメールチャネルを確認してください。
ゲスト、招待されたユーザー、無効なユーザー、サインアウトした状態のアクセスを検証してください。

完了の条件直接のセルフ登録のリクエストが拒否され、招待されたユーザーは引き続き意図したアクセスでサインインできること。

主な仕組みと実装

以下は、この例での組み込みの領域と、想定される画面の変化です。開発作業を記述したもので、実際のファイル構成はアプリに合わせてください。

組み込みの領域コードまたは設定の変更画面と動作の変化
client/config/auth.ts と server/config/auth.ts対応する拡張を保ち、登録と再設定を設定する有効な方法と表示される入口が一致する
アプリの認証のページテンプレートのページと、機能に応じた操作を再利用する使えない登録や再設定の操作は表示されない
保護されたルートと API認証してから、業務操作を認可する直接の API の呼び出しを含め、ゲストが正しく扱われる

組み込みと設定

既定のテンプレートは両方のランタイムを登録し、client/config/auth.ts と server/config/auth.ts で認証を組み立てています。設定を編集するときは、plugins の配列全体を例で置き換えるのではなく、既存の拡張を保ってください。

設定またはファイル役割
server/config/auth.tsdefineAuthConfig でサインインの方法と拡張を組み立てる
client/config/auth.ts対応するクライアントの拡張を登録する
auth.emailAndPassword.enabledメールとパスワードによるサインインを有効にする
auth.emailAndPassword.disableSignUpセルフ登録を無効にする
secrets.keys / SECRETS_KEYS認証のキーを導く元になる、永続的なキー
auth.passwordResetパスワードの再設定と、そのメールチャネルを設定する

プラグインのマイグレーションが認証のテーブルを管理します。サインイン、サインアップ、再設定のページはアプリに属します。別のページを追加する前に、そのルートと有効な方法を確認してください。

認証を使う

/client の useAuthentication() はセッションと読み込みの状態を、useAuthenticationClient() は認証のクライアントを提供します。保護されたルートは auth: 'required' を宣言します。

サーバーでは、/server から authenticationToken を解決し、そのサービスの required() ミドルウェアで API を保護します。業務上の権限はそのあとで確認します。ナビゲーションを隠しても API は保護されません。

AI 開発の制約と検証

プラグイン固有の開発の制約

  • クライアントとサーバーの拡張は一緒に変更し、永続的なキーと信頼できるオリジンを保ってください。
  • サインアップを無効にするときは直接の登録のリクエストを、再設定では実際のメールとリンクの動作をテストしてください。
  • セッションの復元、サインアウト、無効な身元を確認し、認証のあとの認可を残してください。

よくある問題

  • サインインページがない: アプリのルートとテンプレートのページを確認します。
  • 再起動後にセッションが失敗する: インスタンス間の永続的なキーと、セッションの保存先を確認します。
  • サインインできるがアクセスが拒否される: 業務上の権限を確認します。
  • スクリプトから API にアクセスしたい: API キー を使います。

インストールとマイグレーションについては プラグインを管理する を参照してください。

これらはあなたの組み込みの検収の要件であり、実機での検証が完了したことを示すものではありません。実際の変更、実行したチェック、未検証の項目をエージェントに報告させてください。プロジェクトのガイダンス、スキル、共通のチェックについては アプリの開発を続ける と テスト を参照してください。

出典:公開のプラグインの入口と実装。

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。