Storefront ログインバイパス手順¶
Next.js Storefront をローカルで動作確認する際、
認証済みセッションを再現するためのバイパス機能をまとめます。
Vendure 側にテスト顧客を作成し、
フロントエンドから開発用の資格情報で自動ログインする流れです。
現在の標準ガード構成(サーバー全体ガード + Apollo認証エラーハンドリング)を前提としつつ、
開発時のみバイパスを有効化します。
前提¶
- Vendure のシードが最新であること。
apps/vendure-server/src/seed-data.tsで以下のテスト顧客が作成されます。- 一般会員:
test1@ritsubi.mail-box.ne.jp / DevCustomer123! - 直送会員:
test2@ritsubi.mail-box.ne.jp / DevDirect123!
- 一般会員:
- DB を初期化する必要がない場合は
pnpm seed:test-customersを実行すると SuperAdmin/テスト顧客だけを再作成できます。 - 既存 DB にデータがない場合は
pnpm --filter ritsubi-vendure-server run db:seedを実行してください。 - Next.js 側で
.env.localなどを用意できる権限があること。
必要な環境変数¶
| 変数名 | 役割 | 既定値 |
|---|---|---|
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS |
バイパスの ON/OFF | false |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_EMAIL |
自動ログインに使用するメールアドレス | dev-bypass@ritsubi.mail-box.ne.jp |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_PASSWORD |
同パスワード | DevCustomer123! |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_CUSTOMER_ID |
バイパス時に期待する顧客ID | DEV-BYPASS-CUSTOMER |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_FIRST_NAME |
UI 表示用の名 | 開発 |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_LAST_NAME |
UI 表示用の姓 | テスター |
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_CUSTOMER_NUMBER |
UI 表示用の顧客番号 | DEV-BYPASS |
認証ガードの前提(最新版)¶
- サーバー側グローバルガード:
src/middleware.tsで全ページを保護。sessionまたはvendure-sessionCookie が無い場合は/auth/login?redirect=...へ 307 リダイレクト。/authや静的アセットのみ通過。 - Apollo認証エラーハンドリング:
packages/sdk/shop/src/apollo-config.tsで GraphQL/HTTP の 401/403・FORBIDDEN/UNAUTHENTICATEDを検知したらクッキー削除+ログインへ強制遷移。 - クライアント側ガードの役割:
AuthGateは「パスワード変更必須フロー」などの補助のみ。ページ個別の未ログイン用UIは撤廃(例:/account/favoritesは未ログイン時に即リダイレクト)。
バイパスを有効にすると、上記ガードを通過できる開発用セッションを自動生成します。本番・ステージングでは必ず OFF にしてください。
最小構成では .env.local に以下を追記すれば動作します。
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS=true
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_EMAIL=test1@ritsubi.mail-box.ne.jp
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS_PASSWORD=DevCustomer123!
起動コマンド¶
apps/storefront/package.json に dev:bypass スクリプトを追加済みです。
pnpm --filter ritsubi-storefront run dev:bypass
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASS=trueを付与した状態でnext devを起動します。- 初回アクセス時に GraphQL の
loginミューテーションを実行し、Vendure セッション Cookie を取得してからactiveCustomer/activeOrderをフェッチします。 - 通常の購入フロー(お気に入り、カート投入、チェックアウト)がそのまま利用できます。
VS Code タスク¶
apps/storefront/.vscode/tasks.json に「Dev: Storefront (Auth
Bypass)」タスクを追加済みです。VS
Code のコマンドパレットからタスクを実行すると、上記 pnpm run dev:bypass
と同等の開発サーバーが立ち上がります。
注意事項¶
- 本番・ステージングでは無効化:
NEXT_PUBLIC_STOREFRONT_AUTH_BYPASSは開発専用フラグです。本番ビルドや Cloudflare Workers デプロイ時にはfalseのままにしてください。 - セキュリティ: デフォルトの資格情報は公開扱いのため、ネットワーク公開環境でバイパスを有効にしないでください。必要に応じて
.env.localで値を上書きし、共有リポジトリにはコミットしないでください。 - シードアカウントの維持: 自動ログインは Vendure 上のユーザー情報に依存します。DB リセット後は必ず
db:seedを実行し、必要に応じてpnpm seed:test-customersで SuperAdmin/テスト顧客を再投入してください。
参考¶
- Storefront 認証設計:
/docs/plans/email-login-implementation.plan.md - Vendure シード手順:
/apps/vendure-server/src/seed-data.ts - Storefront 実装ガイド:
/docs/03-implementation/frontend/index.md