วิธีการใช้งานโหมดแขก (ผู้ใช้แบบไม่ระบุตัวตน) และแปลงเป็นผู้ใช้ Logto
เรียนรู้วิธีการใช้งานโหมดแขกและแปลงเป็นผู้ใช้ Logto ด้วยรูปแบบสามเฟส: จัดการเซสชันแขก, รับรองความถูกต้องผ่าน OIDC, และผสานข้อมูลแขกเข้ากับบัญชีผู้ใช้อย่างปลอดภัย
เรียนรู้วิธีการใช้งานโหมดแขกและแปลงเป็นผู้ใช้ Logto ด้วยรูปแบบสามเฟส: จัดการเซสชันแขก, รับรองความถูกต้องผ่าน OIDC, และผสานข้อมูลแขกเข้ากับบัญชีผู้ใช้อย่างปลอดภัย
แอปหลายแอปให้ผู้ใช้ทดลองฟีเจอร์ก่อนสมัครใช้งาน เช่น ตะกร้าสินค้า ร่างเอกสาร หรือบันทึกการตั้งค่า ผู้ใช้คาดหวังว่า "โหมดแขก" จะใช้งานได้อย่างราบรื่น
แต่ถ้าคุณใช้ Logto (หรือผู้ให้บริการ OIDC ใด ๆ) เพื่อยืนยันตัวตน คุณอาจสงสัยว่าควรจัดการผู้ใช้แบบไม่ระบุตัวตนอย่างไร?
คำตอบสั้น ๆ: Logto ดูแลการยืนยันตัวตน แอปของคุณดูแลเซสชันแขก แยกกันอย่างชัดเจน
ในบทความนี้ ผมจะแสดงรูปแบบง่าย ๆ แบบสามเฟสในการใช้งานโหมดแขกกับ Logto คุณจะได้เรียนรู้วิธี:
คุณอาจคาดว่า Logto จะมีฟีเจอร์ "anonymous login" บางอย่าง เช่น เรียก API รับ token โดยไม่ต้องให้ผู้ใช้มีส่วนร่วม
แต่ OIDC ไม่ได้ทำงานแบบนั้น เหตุผลคือ:
OIDC สร้างขึ้นจากหลักการยินยอมของผู้ใช้ จุดประสงค์คือยืนยันว่า "นี่คือใคร" ถ้าใช้โทเคนแบบไร้ตัวตนก็เท่ากับ "นี่คือบางคนแต่เราไม่รู้ว่าใคร" ซึ่งไม่ตรงจุดประสงค์
คิดแบบนี้:
โหมดแขกเกี่ยวกับ session tracking ไม่ใช่ authentication ดังนั้นจึงไม่ควรอยู่บน auth system ของคุณ
นี่คือเรื่องดี! เพราะมันแยกกันอย่างชัดเจน:
ให้แต่ละระบบทำหน้าที่ที่มันถูกออกแบบมา
แนวทางคือ: Guest → Auth → Merge
backend ของคุณจะสร้างและจัดการเซสชันแขก Logto ยังไม่เกี่ยวข้องในขั้นตอนนี้
เมื่อผู้ใช้ทำอะไรที่สำคัญ (เช่น เพิ่มเข้าตะกร้า) backend ของคุณจะ:
ให้ง่ายเข้าไว้ ตาราง guest_sessions ที่มี guest_id, data, และ created_at ก็เพียงพอแล้ว
เมื่อผู้ใช้คลิก "สมัคร" หรือ "เข้าสู่ระบบ" ให้เรียกขั้นตอนมาตรฐาน OIDC ของ Logto
guest ID ยังคงอยู่ใน cookie/storage ระหว่างกระบวนการนี้ หลังจากยืนยันตัวตนสำเร็จ ฝั่ง frontend ของคุณจะมี:
เชื่อมโยงข้อมูลเข้าด้วยกัน โดยเรียก API backend พร้อมทั้งสองอย่าง:
backend ของคุณจะต้องตรวจสอบ โทเคนทั้งสอง ก่อนจะผสานข้อมูล:
เฉพาะเมื่อผ่านการตรวจสอบทั้งสองแล้ว:
ตรรกะในการผสานขึ้นกับธุรกิจของคุณ ตะกร้าสินค้า? รวมรายการ ร่างเอกสาร? เปลี่ยนเจ้าของ คุณเป็นคนตัดสินใจ
endpoint สำหรับผสานข้อมูลแขกเป็นการดำเนินการที่ละเอียดอ่อน ต้องระวังดังนี้:
โหมดแขกกับ Logto ใช้รูปแบบง่าย ๆ:
รูปแบบนี้ใช้ได้กับผู้ให้บริการ OIDC ทุกเจ้าไม่ใช่แค่ Logto ประเด็นสำคัญคือ: การยืนยันตัวตนกับ session tracking คือเรื่องคนละส่วน ให้แต่ละระบบทำในสิ่งที่มันถูกออกแบบมา