Header Ads

Header ADS

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 করে


✅ এটা কিভাবে কাজ করে?

  1. ইউজার যখন sign in করে:

    • তখন passport.serializeUser() ফাংশন চলে।

    • এই ফাংশন বলে দেয়: "আমাকে ইউজার অবজেক্ট দাও, আমি কোন অংশটা session এ রাখব।"

    • সাধারণত আমরা বলি: user.id রাখো।


    এরপর এই ID টা server-side session এ store হয় — যেমন:




পরবর্তীতে যদি ইউজার আবার request করে:

  • Cookie তে session ID থাকে।

  • Server সেই session খুঁজে পেয়ে deserializeUser() ফাংশনের মাধ্যমে আসল ইউজার ডেটা ফেরত আনে।





 

Powered by Blogger.