𝟱 เทคนิคการใช้ Cookie เพื่อ Debug ปัญหา Auth
การ Debug ระบบ Authentication ในเว็บแอปนั้นใช้เวลานาน คุณมักจะเสียเวลาไปกับการสร้างบัญชีใหม่หรือการล้าง Cookie ทั้งหมดเพื่อทดสอบผู้ใช้งานประเภทต่างๆ
คุณสามารถทดสอบสถานะใดก็ได้โดยไม่ต้องไปยุ่งกับฐานข้อมูลของคุณ ลองใช้ 5 เทคนิคนี้เพื่อจัดการกับ Cookie โดยตรง
- เจาะจงลบเฉพาะ Cookie ที่ต้องการ แทนที่จะล้างทั้งหมด
การล้าง Cookie ทั้งหมดจะทำให้ session ของ dev server, local storage และโหมดทดสอบของ Stripe ของคุณหายไป แทนที่จะทำแบบนั้น ให้ลบเฉพาะ auth cookie เท่านั้น
ชื่อที่พบบ่อย ได้แก่:
- session
- sid
- auth_token
- _session_id
ใน DevTools ให้ไปที่ Application > Cookies > [your domain] จากนั้นคลิกขวาที่ session cookie แล้วเลือก Delete วิธีนี้จะรีเซ็ตสถานะผู้ใช้ให้เป็นแบบไม่ได้ล็อกอิน (logged-out) ในขณะที่ยังคงการตั้งค่าอื่นๆ ของคุณไว้เหมือนเดิม
- จำลองผู้ใช้ใหม่ด้วยการลบ onboarding flags
แอปต่างๆ ใช้ Cookie เพื่อติดตามว่าผู้ใช้ตั้งค่าเสร็จสิ้นแล้วหรือยัง ให้ลองมองหาชื่ออย่าง onboarding_complete หรือ first_visit
วิธีทดสอบ flow ของผู้ใช้ใหม่:
- Export cookie ปัจจุบันของคุณ
- ลบ onboarding flag ออก
- รีโหลดหน้าเว็บ
วิธีนี้จะช่วยให้คุณทดสอบ UI ในส่วนต่างๆ ที่เปลี่ยนไปตามลำดับขั้นตอนได้โดยไม่ต้องสร้างบัญชีใหม่
- สลับบทบาทผู้ใช้ (User Roles) ภายใน 30 วินาทีด้วยการใช้ snapshots
หากแอปของคุณมีบทบาทที่แตกต่างกัน เช่น Admin หรือ Guest อย่าเสียเวลาล็อกอินและล็อกเอาต์ด้วยตัวเอง ให้ใช้ cookie snapshots แทน
- ล็อกอินในฐานะ Admin จากนั้น Export cookie เป็น
admin-session.json - ล็อกอินในฐานะ Regular User จากนั้น Export cookie เป็น
user-session.json - หากต้องการสลับบทบาท เพียงแค่ Import ไฟล์ JSON เข้าไปแล้วรีโหลดหน้าเว็บ
เซิร์ฟเวอร์จะเชื่อถือ session token นั้น ซึ่งคุณกำลังใช้ session ที่ถูกต้องที่คุณสร้างไว้แล้วอยู่แล้ว ควรเก็บไฟล์ JSON เหล่านี้ไว้ในเครื่องของคุณเท่านั้น เพราะมันมี session token ที่สำคัญและเป็นความลับ
- ทดสอบ session ที่หมดอายุได้ทันที
ไม่ต้องรอเป็นชั่วโมงเพื่อให้ session หมดอายุ ให้เปลี่ยนวันหมดอายุด้วยตัวเอง
ใน DevTools ให้ดับเบิลคลิกที่คอลัมน์ Expires ของ session cookie ของคุณ แล้วตั้งค่าเป็นวันที่ในอดีต จากนั้นรีโหลดหน้าเว็บ คุณจะเห็นทันทีว่าเกิดอะไรขึ้นเมื่อ session หมดเวลา (times out)
- แก้ไขปัญหาการวนลูปของการรีไดเรกต์ตอนล็อกอิน (login redirect loops)
การวนลูปมักเกิดขึ้นเนื่องจาก Cookie ที่ล้าสมัย (stale) หรือมีรูปแบบผิดพลาด (malformed) คือมี session อยู่จริงแต่เซิร์ฟเวอร์ปฏิเสธมัน
วิธีหาสาเหตุ:
- ระบุ Cookie ทั้งหมดที่เกี่ยวข้องกับ auth
- ลบออกทีละตัว
- รีโหลดหน้าเว็บหลังจากลบแต่ละครั้ง
ทันทีที่การวนลูปหยุดลง แสดงว่าคุณเจอ Cookie ที่มีปัญหาแล้ว วิธีนี้จะช่วยให้คุณระบุได้ว่าปัญหาเกิดจาก token ที่ไม่ถูกต้อง หรือเกิดจาก cookie domain ที่ไม่ถูกต้อง
วิธีเหล่านี้ใช้งานได้แม้กระทั่งกับ HttpOnly cookies เพราะ DevTools และส่วนขยายอย่าง CookieJar ทำงานในระดับเบราว์เซอร์