Authentication : Session & Cookie
🍪 Cookie কি?
Cookie হচ্ছে ব্রাউজারে রাখা ছোট একটা ডাটা ফাইল, যা client-side এ store হয়।
📌 উদাহরণস্বরূপ:
তুমি যখন কোনো ওয়েবসাইটে theme dark করে দাও, সেটা ব্রাউজারে remember রাখতে cookie ইউজ করা হয়।
🛠 Session কি?
Session হচ্ছে সার্ভার-সাইডে ইউজার সম্পর্কে ইনফো রাখা একটি সিস্টেম, যা ইউজার লগ ইন করলে তৈরি হয়।
📌 উদাহরণস্বরূপ:
তুমি যখন লগ ইন করো, সার্ভার তোমার জন্য একটা session বানায়। সেই session-এ তোমার আইডি বা রোল সংরক্ষিত থাকে।
🤝 একসাথে কিভাবে কাজ করে?
যখন তুমি session-based auth করো (যেমন
express-session
), তখন সার্ভার session তৈরি করে এবং সেই session-এর id একটি cookie আকারে client-এ পাঠিয়ে দেয়।
Client (Browser) এরপর যতবার request করবে, সাথে করে ওই cookie (sid
) পাঠাবে server এ ।
Server সেই cookie-ID match করে দেখে যে এই session কার — আর তারপর session থেকে ইউজারের ডেটা নেয়।
✅ Session এবং Session ID দেখতে কেমন হয়?
🧠 1. Session ID (যেটা cookie-র মাধ্যমে client-এ পাঠানো হয়)
এটা একটা লম্বা, র্যান্ডম অ্যালফানিউমেরিক স্ট্রিং।
উদাহরণ: "7JekDj29J89sdf9Dfs9sd" .
💾 2. Session Object (server side এ store হয়)
Server-side এ MongoDB বা memory তে এমনভাবে session store হয়:
"user"
ফিল্ডটি হচ্ছে user collection-এর object id — যেটা MongoDB নিজে নিজেই তৈরী করে যখন একজন ইউজার sign up করে।✅ এটা কিভাবে কাজ করে?
-
ইউজার যখন sign in করে:
-
তখন
passport.serializeUser()
ফাংশন চলে। -
এই ফাংশন বলে দেয়: "আমাকে ইউজার অবজেক্ট দাও, আমি কোন অংশটা session এ রাখব।"
-
সাধারণত আমরা বলি:
user.id
রাখো।
পরবর্তীতে যদি ইউজার আবার request করে:
-
Cookie তে session ID থাকে।
-
Server সেই session খুঁজে পেয়ে
deserializeUser()
ফাংশনের মাধ্যমে আসল ইউজার ডেটা ফেরত আনে।