𝟱 ترفند کوکی برای دیباگ کردن مشکلات احراز هویت (Auth)
دیباگ کردن احراز هویت در اپلیکیشنهای وب زمانبر است. شما اغلب وقت خود را صرف ساختن حسابهای کاربری جدید یا پاک کردن تمام کوکیها برای تست انواع مختلف کاربران میکنید.
شما میتوانید هر حالتی را بدون دستکاری در دیتابیس خود تست کنید. از این پنج تکنیک برای دستکاری مستقیم کوکیها استفاده کنید.
۱. بهجای پاک کردن همه چیز، کوکیهای خاص را هدف قرار دهید
پاک کردن تمام کوکیها باعث از بین رفتن نشست (session) سرور توسعه، local storage و حالتهای تست Stripe میشود. در عوض، فقط کوکی مربوط به احراز هویت (auth cookie) را حذف کنید.
نامهای رایج عبارتند از:
- session
- sid
- auth_token
- _session_id
در DevTools، به مسیر Application > Cookies > [your domain] بروید. روی کوکی مربوط به session راستکلیک کرده و گزینه Delete را انتخاب کنید. این کار وضعیت کاربر را به حالت خارج از حساب (logged-out) برمیگرداند، در حالی که سایر تنظیمات شما دستنخورده باقی میمانند.
۲. با حذف پرچمهای (flags) مربوط به ورود اولیه، کاربران جدید را شبیهسازی کنید
اپلیکیشنها از کوکیها برای ردیابی اینکه آیا کاربر مراحل راهاندازی را تمام کرده است یا خیر، استفاده میکنند. به دنبال نامهایی مانند onboarding_complete یا first_visit بگردید.
برای تست جریان کاربر جدید:
- کوکیهای فعلی خود را اکسپورت (Export) کنید.
- پرچم مربوط به onboarding را حذف کنید.
- صفحه را ریلود (Reload) کنید.
این کار به شما اجازه میدهد شاخههای رابط کاربری (UI) مرحلهای را بدون نیاز به حساب کاربری جدید تست کنید.
۳. با استفاده از اسنپشاتها، نقشهای کاربری را در ۳۰ ثانیه تغییر دهید
اگر اپلیکیشن شما نقشهای مختلفی مانند Admin یا Guest دارد، به صورت دستی وارد و خارج نشوید. از اسنپشاتهای کوکی استفاده کنید.
- به عنوان Admin وارد شوید. کوکیها را با نام
admin-session.jsonاکسپورت کنید. - به عنوان یک کاربر معمولی (Regular User) وارد شوید. آنها را با نام
user-session.jsonاکسپورت کنید. - برای تغییر نقش، کافی است فایل JSON را ایمپورت (Import) کرده و صفحه را ریلود کنید.
سرور به توکن نشست (session token) اعتماد میکند. شما در واقع از نشستهای معتبری که قبلاً ساختهاید استفاده میکنید. این فایلهای JSON را در سیستم خودتان نگه دارید؛ زیرا حاوی توکنهای حساس نشست هستند.
۴. نشستهای منقضیشده را فوراً تست کنید
برای منقضی شدن یک نشست، ساعتها منتظر نمانید. تاریخ انقضا را به صورت دستی تغییر دهید.
در DevTools، روی ستون Expires در کوکی مربوط به session دو بار کلیک کنید. آن را روی تاریخی در گذشته تنظیم کنید. صفحه را ریلود کنید. خواهید دید که دقیقاً وقتی زمان نشست تمام میشود (timeout)، چه اتفاقی میافتد.
۵. حلقههای ریدایرکت (redirect loops) هنگام ورود را اصلاح کنید
حلقهها اغلب به دلیل یک کوکی قدیمی یا نامعتبر (malformed) رخ میدهند. نشست وجود دارد اما سرور آن را رد میکند.
برای پیدا کردن علت:
- تمام کوکیهای مرتبط با احراز هویت (auth) را شناسایی کنید.
- آنها را یکی یکی حذف کنید.
- بعد از هر حذف، صفحه را ریلود کنید.
لحظهای که حلقه متوقف شد، کوکی خراب را پیدا کردهاید. این کار به شما کمک میکند بفهمید مشکل از یک توکن اشتباه است یا یک دامنه (domain) نادرست برای کوکی.
این روشها حتی برای کوکیهای HttpOnly نیز کار میکنند، زیرا DevTools و افزونههایی مانند CookieJar در سطح مرورگر عمل میکنند.