はじめに
このクイックスタートでは、TanStack Start Reactアプリケーションに Auth0 authentication を追加する方法を説明します。Auth0 TanStack Start React SDKを使用して、Login、logout、保護されたroute、ユーザープロファイル情報を備えたサーバーレンダリング型のアプリを構築します。1
新しいプロジェクトを作成する
この Quickstart 用に、新しい TanStack Start プロジェクトを作成します。プロジェクトを開きます:
お使いのマシンで
@tanstack/cli を初めて実行する場合、npm からインストールの確認を求められます。y と入力して続行してください。2
Auth0 TanStack Start SDK をインストールする
3
Tailwind CSS を追加
Tailwind CSS と Vite プラグインをインストールします。
vite.config.ts を更新して Tailwind の Plugin を追加し、開発サーバーを port 3000 に固定します。vite.config.ts
strictPort: true を指定すると、Vite はポートを勝手に切り替えるのではなく、その場でエラーとして停止します。Auth0 アプリケーションのコールバック URL はポート 3000 に固定されているため、ポートが黙って変更されると、何もリッスンしていないポートにブラウザがリダイレクトされ、ログイン画面で承認した後に空白のページから先に進めなくなってしまいます。src/styles.css の内容を次の内容に置き換えます。src/styles.css
4
プロジェクトファイルを作成
Auth0連携に必要な追加ファイルを作成します。
5
Auth0 App を設定する
次に、Auth0 テナントで新しいアプリを作成し、環境変数をプロジェクトに追加します。Auth0アプリをセットアップする方法は3つあります。Quick Setupツールを使用する (推奨) 、CLIコマンドを実行する、またはAuth0 Dashboardから手動で構成する、のいずれかです。
- クイックセットアップ(推奨)
- CLI
- Auth0 Dashboard
Auth0 アプリを作成し、適切な設定値が事前入力された
.env ファイルをコピーします。6
Auth0サーバーのインスタンスを作成する
src/auth.server.ts に Auth0 server インスタンスを追加します。Auth0 server インスタンスは、先ほど設定した environment variables から構成を読み込みます。src/auth.server.ts
7
Auth0 middleware を登録する
Auth0 の request middleware を登録するために、
src/start.ts に以下を追加します。src/start.ts
start.ts はクライアントバンドルにもコンパイルされるため、auth0Middleware は /server バレルではなく /server/middleware サブパスからインポートしてください。このミドルウェアは、以下の認証ルートを自動的にマウントします。
/auth/login- Login ルート/auth/callback- コールバックルート/auth/logout- Logout ルート/auth/profile- ユーザープロファイルルート/auth/backchannel-logout- バックチャネル logout ルート
8
Auth0をrouterに組み込む
src/router.tsx を更新し、Router のコンテキストが Auth0 で解決された認証 state を保持するようにします。TanStack Start では、このファイルで getRouter という名前の関数を export する必要があります。src/router.tsx
9
ルートルートを更新する
src/routes/__root.tsx を更新して、レンダリング前に認証 state を解決し、アプリを Auth0Provider でラップします。src/routes/__root.tsx
これにより
createRootRoute が createRootRouteWithContext<RouterContext>() に置き換わり、ルートツリーの型に context.auth0 を含められるようになります。10
Login、Logout、プロファイルコンポーネントを作成する
ステップ 4 で作成したファイルに、コンポーネントのコードを追加します:次に、
src/routes/index.tsx のプレースホルダーの内容 (スキャフォールドで生成された Welcome to TanStack Start ページ) を、以下の内容に置き換えます。src/routes/index.tsx
useLogin と useLogout は、client-side の Router による遷移ではなく、ブラウザー全体のナビゲーションを行います。これは /auth/* がサーバー側の middleware で処理され、session cookie を有効にするにはページの再読み込みが必要なためです。11
ルートを保護する
requireAuth ガードを使用して、保護された /dashboard route を src/routes/dashboard.tsx に追加します。この route は、HTML がブラウザーに送信される前にサーバー側で未認証のユーザーを /auth/login にリダイレクトします。src/routes/dashboard.tsx
12
アプリを実行する
アプリは http://localhost:3000 でアクセスできます。
チェックポイントここまでで、localhost 上で Auth0 Loginページが問題なく動作しているはずです