Storefront ログインバイパス手順¶
Vite Storefront をローカルで動作確認する際、認証済みセッションを再現するためのバイパス機能をまとめます。Vendure 側にテスト顧客を作成し、フロントエンドから開発用の資格情報で自動ログインする流れです。現在の標準ガード構成(route beforeLoad guard + GraphQL client / request guard)を前提としつつ、開発時のみバイパスを有効化します。
前提¶
- Vendure のシードが最新であること。
apps/vendure-server/src/seed-data.tsで以下のテスト顧客が作成されます。- 一般会員:
test1@ritsubi-platform.com / DevCustomer123! - 直送会員:
test2@ritsubi-platform.com / DevDirect123!
- 一般会員:
- DB を初期化する必要がない場合は
pnpm seed:test-customersを実行すると SuperAdmin/テスト顧客だけを再作成できます。 just dev/just dev-storefront-stack/just dev-storefront/just dev-storefront-bypassでは、永続化済みローカル DB の schema / seed catalog / required baseline / test customer のドリフトを防ぐため、起動前にmigrate:runとscripts/sync-runtime-baseline.tsが自動実行されます。required baselineは依存カテゴリではなく、default channel や payment methods を含む独立監査対象です。pnpm run dev:services+ 個別起動の導線では自動同期されないため、必要に応じて明示実行してください。- 既存 DB にデータがない場合は
pnpm exec nx run ritsubi-vendure-server:db:seedを実行してください。 - Storefront 側で環境変数を設定できること(Secrets Manager + just または起動コマンドで指定)。
必要な環境変数¶
| 変数名 | 役割 | 既定値 |
|---|---|---|
STOREFRONT_AUTH_BYPASS |
バイパスの ON/OFF | false |
STOREFRONT_AUTH_BYPASS_EMAIL |
自動ログインに使用するメールアドレス | なし |
STOREFRONT_AUTH_BYPASS_PASSWORD |
同パスワード | なし |
認証ガードの前提(最新版)¶
- route 認証ガード:
src/runtime/auth-guard.tsを各 route のbeforeLoadから呼び出して保護する。sessionまたはvendure-sessionCookie が無い場合は/auth/login?redirect=...へリダイレクトする。 - クライアント側の GraphQL 再取得 / 認証状態更新:
TanStack QueryとrefreshCustomer()を正本とし、401/403 や認可エラーは request-time guard と各 mutation/query の失敗処理からログイン導線へ戻す。 - クライアント側ガードの役割:
AuthGateは「パスワード変更必須フロー」などの補助のみ。ページ個別の未ログイン用UIは撤廃(例:/account/favoritesは未ログイン時に即リダイレクト)。 - 認証例外ルート:
/auth配下は server guard の対象外。再設定導線として/auth/password-resetと/auth/reset-password?token=...が有効です。(/auth/password-reset/completeは現行運用では使いません。)
バイパスを有効にすると、上記ガードを通過できる開発用セッションを Worker API
(POST /api/auth-bypass)から自動生成します。local origin(localhost /
*.localhost)でのみ有効であり、本番・ステージング・preview・公開 URL では利用できません。
最小構成では環境変数として以下を設定すれば動作します。
STOREFRONT_AUTH_BYPASS=true
VITE_PUBLIC_STOREFRONT_AUTH_BYPASS=enabled
STOREFRONT_AUTH_BYPASS_EMAIL=test1@ritsubi-platform.com
STOREFRONT_AUTH_BYPASS_PASSWORD=DevCustomer123!
起動コマンド¶
Storefront の bypass 起動は just レシピを正本にしています。
just dev-storefront-bypass
STOREFRONT_AUTH_BYPASS=trueとVITE_PUBLIC_STOREFRONT_AUTH_BYPASS=enabledを付与した状態で Vite dev server を起動します。- 初回アクセス時に
/api/auth-bypassが Worker API で GraphQL のloginミューテーションを実行し、Vendure セッション Cookie を取得してからactiveCustomer/activeOrderをフェッチします。 - 通常の購入フロー(お気に入り、カート投入、チェックアウト)がそのまま利用できます。
VS Code タスク¶
ルートの .vscode/tasks.json
からは日常導線のみを公開しています。認証バイパスが必要な場合は
Storefront: Auth Bypass (localhost) タスクを実行してください。
just local-storefront-bypass と同等の開発サーバーが立ち上がります。
CLI では just dev-storefront-bypass を利用してください。
just dev-storefront-bypass/just local-storefront-bypassは、STOREFRONT_AUTH_BYPASS_EMAIL/STOREFRONT_AUTH_BYPASS_PASSWORDが未設定なら seed 済みの一般会員test1@ritsubi-platform.com / DevCustomer123!を補完します。- 別のテスト顧客で確認したい場合は、同名の server-only 環境変数を明示指定して上書きしてください。
注意事項¶
- local origin 専用:
STOREFRONT_AUTH_BYPASSは開発専用フラグです。localhost/*.localhost以外では Worker / browser ともに bypass を開きません。本番ビルドや Cloudflare Workers デプロイ時にはfalseのままにしてください。 - セキュリティ: 資格情報は server-only の環境変数として渡し、
VITE_PUBLIC_*へ載せないでください。共有リポジトリや公開ログに秘密情報を残さないでください。 - シードアカウントの維持: 自動ログインは Vendure 上のユーザー情報に依存します。DB リセット後は必ず
db:seedを実行し、必要に応じてpnpm seed:test-customersで SuperAdmin/テスト顧客を再投入してください。
参考¶
- Vendure シード手順:
/apps/vendure-server/src/seed-data.ts - Storefront 実装ガイド:
/docs/03-implementation/frontend/index.md