Skip to content

Session คืออะไร

Session คำตอบสั้นๆ คือช่วงเวลาตั้งแต่เรา login จนถึง logout

ถ้าคำอธิบายเพิ่มเติมคือ => Session (เซสชัน) คือช่วงเวลาหรือการเชื่อมต่อชั่วคราวระหว่างผู้ใช้ (client) กับระบบหรือเซิร์ฟเวอร์ (server) เพื่อรักษาสถานะและข้อมูลของผู้ใช้ในระหว่างการใช้งานแอปพลิเคชัน เช่น การล็อกอินเข้าสู่เว็บไซต์หรือแอปพลิเคชัน โดยเซสชันจะช่วยให้ระบบ จดจำว่าผู้ใช้คนนั้นเป็นใคร และ มีข้อมูลอะไรบ้างที่เกี่ยวข้องกับผู้ใช้คนนั้นในระหว่างการโต้ตอบ

รูปแบบ Session หลักๆใน Web

  • เก็บ session id ใน cookie ฝั่ง client
  • server มี storage mapping session id → user data (เช่น memory, redis, db)
  • ใช้เยอะใน web app ทั่วไป

ตัวอย่างใน clack

ts
import { createSession } from 'clack/session'
const session = createSession({ store: 'memory' })

2. Token-based Session (JWT)

  • สร้าง token (เช่น JWT) แล้วเก็บที่ client (localStorage, sessionStorage, cookie)
  • user data ถูก encode ใน token ไม่ต้อง storage ฝั่ง server
  • เหมาะกับระบบ stateless

ตัวอย่างใน supabase

ts
const { data, error } = await supabase.auth.signInWithPassword({ email, password })
// ได้ access_token (JWT)

3. OAuth/OpenID Connect Session

  • ใช้สำหรับ third-party login (Google, Microsoft, ฯลฯ)
  • ได้ token (access_token, id_token) จาก provider
  • ใช้ร่วมกับ session/JWT ได้

ตัวอย่างใน workos

ts
const { profile, accessToken } = await workos.sso.getProfile({ code: 'auth_code' })
// ได้ accessToken (JWT)
  • ส่ง link/code ไป email/phone user
  • เมื่อคลิก link/กรอก code จะได้ session/token
  • ไม่ต้องใช้ password

ตัวอย่างใน supabase

ts
const { data, error } = await supabase.auth.signInWithOtp({ email: '[email protected]' })