認証問題をデバッグするための5つのクッキー・テクニック
Webアプリの認証デバッグは時間がかかります。異なるユーザータイプをテストするために、新しいアカウントを作成したり、すべてのクッキーを削除したりして時間を浪費してしまうことがよくあります。
データベースに一切触れることなく、あらゆる状態をテストできます。クッキーを直接操作するための5つのテクニックを活用しましょう。
- すべてを削除するのではなく、特定のクッキーをターゲットにする
すべてのクッキーを削除すると、開発サーバーのセッション、ローカルストレージ、Stripeのテストモードなどが消えてしまいます。代わりに、認証クッキーのみを削除してください。
一般的な名前には以下が含まれます:
- session
- sid
- auth_token
- _session_id
DevToolsで、Application > Cookies > [your domain] に移動します。セッションクッキーを右クリックして「Delete」を選択します。これにより、他の設定を保持したまま、ユーザーの状態をログアウト状態にリセットできます。
- オンボーディング・フラグを削除して新規ユーザーをシミュレートする
アプリは、ユーザーがセットアップを完了したかどうかを追跡するためにクッキーを使用します。onboarding_complete や first_visit といった名前を探してください。
新規ユーザーのフローをテストするには:
- 現在のクッキーをエクスポートする。
- オンボーディング・フラグを削除する。
- ページをリロードする。
これにより、新しいアカウントを作成することなく、段階的なUIの分岐をテストできます。
- スナップショットを使用して30秒でユーザーロールを切り替える
アプリに Admin や Guest といった異なるロールがある場合、手動でログイン・ログアウトを繰り返さないでください。クッキーのスナップショットを使用しましょう。
- Adminとしてログインします。クッキーを
admin-session.jsonとしてエクスポートします。 - 一般ユーザーとしてログインします。それらを
user-session.jsonとしてエクスポートします。 - ロールを切り替えるには、単にJSONファイルをインポートしてリロードするだけです。
サーバーはセッション・トークンを信頼します。あなたは、すでに作成済みの有効なセッションを使用していることになります。これらのJSONファイルはローカルに保管してください。これらには機密性の高いセッション・トークンが含まれています。
- 有効期限切れのセッションを即座にテストする
セッションが切れるのを何時間も待つ必要はありません。有効期限を手動で変更してください。
DevToolsで、セッションクッキーの「Expires」列をダブルクリックします。過去の日付に設定してください。ページをリロードすると、セッションがタイムアウトしたときに何が起こるかを正確に確認できます。
- ログインのリダイレクトループを修正する
ループは、古いクッキーや形式が不正なクッキーが原因で発生することがよくあります。セッションは存在するものの、サーバーによって拒否されている状態です。
原因を特定するには:
- すべての認証関連のクッキーを特定する。
- それらを一つずつ削除する。
- 削除するたびにリロードする。
ループが止まった瞬間、それが問題のあるクッキーです。これにより、問題が不正なトークンなのか、あるいは誤ったクッキー・ドメインなのかを特定できます。
DevToolsやCookieJarのような拡張機能はブラウザレベルで動作するため、これらの方法は HttpOnly クッキーに対しても有効です。