调试身份验证问题的 5 个 Cookie 小技巧
在 Web 应用中调试身份验证非常耗时。你经常为了测试不同的用户类型而浪费时间去创建新账号或清除所有 Cookie。
无需触碰数据库,你就可以测试任何状态。使用这五种技术直接操作 Cookie。
- 针对特定的 Cookie,而不是清除全部
清除所有 Cookie 会破坏你的开发服务器会话、本地存储(local storage)和 Stripe 测试模式。相反,只需删除身份验证(auth)Cookie 即可。
常见的名称包括:
sessionsidauth_token_session_id
在 DevTools 中,前往 Application > Cookies > [你的域名]。右键点击会话 Cookie 并选择 Delete。这会将用户状态重置为未登录,同时保持你的其他设置不变。
- 通过删除新手引导标志(onboarding flags)来模拟新用户
应用使用 Cookie 来跟踪用户是否完成了设置。寻找像 onboarding_complete 或 first_visit 这样的名称。
要测试新用户流程:
- 导出当前的 Cookie。
- 删除新手引导标志。
- 重新加载页面。
这让你无需创建新账号即可测试渐进式 UI 分支。
- 使用快照在 30 秒内切换用户角色
如果你的应用有不同的角色(如 Admin 或 Guest),不要手动登录和登出。使用 Cookie 快照。
- 以 Admin 身份登录。将 Cookie 导出为
admin-session.json。 - 以 Regular User 身份登录。将其导出为
user-session.json。 - 要切换角色,只需导入 JSON 文件并重新加载即可。
服务器信任会话令牌(session token)。你使用的是已经创建的有效会话。请将这些 JSON 文件保存在本地,因为它们包含敏感的会话令牌。
- 立即测试过期的会话
不要等待数小时让会话失效。手动更改过期日期。
在 DevTools 中,双击会话 Cookie 的 Expires 列。将其设置为过去的一个日期。重新加载页面。你将准确看到会话超时时会发生什么。
- 修复登录重定向循环
循环通常是因为 Cookie 过期或格式错误导致的。会话存在,但服务器拒绝了它。
寻找原因的方法:
- 识别所有与身份验证相关的 Cookie。
- 逐个删除它们。
- 每次删除后重新加载页面。
循环停止的那一刻,你就找到了那个有问题的 Cookie。这有助于你确定问题是由于错误的令牌还是错误的 Cookie 域名引起的。
这些方法甚至适用于 HttpOnly Cookie,因为 DevTools 和像 CookieJar 这样的扩展程序是在浏览器层面运行的。