TextFileShopProject.zip
حجم:
2.6M
فروشگاه حرفه ای به جای ذخیره در دیتابیس ذخیره در فایل text
RamDbLikeProject.zip
حجم:
2.5M
پروژه ای نوشتم که کنترلر نمیفهمد از دیتابیس می خواند یا فایل text
شبیه ساز Db Context و EFCore ساختم
حتماً! بیایید این دو مفهوم مهم را با زبان ساده و شکلکها بررسی کنیم تا ماندگار شوند.
---
### ۱. سشن (Session) 🧠👜
سشن مثل یک کیف پول کوچک است که وقتی شما وارد یک فروشگاه (سایت) میشوید، به شما میدهند.
* چطور کار میکند؟ 🆔
وقتی برای اولین بار وارد سایت میشوید، سرور یک کد شناسایی منحصربهفرد برای شما میسازد (مثلاً
SessionID). 🛒 شما: «سلام، من مشتری جدیدم.» 🖥 سرور: «خوش آمدی! این یک کیف پول خالی است. هر چیزی بخری داخلش میگذارم. این هم شناسهی توست:
12345» * کاربردش چیست؟ 🛍 فرض کنید در یک فروشگاه آنلاین هستید: ۱. یک کفش خریدید ➡️ سرور در سشن شما مینویسد: «کفش». ۲. یک جوراب خریدید ➡️ سرور در سشن شما اضافه میکند: «جوراب». ۳. به صفحه پرداخت میروید ➡️ سرور کیف پول (سشن) شما را چک میکند و میبیند داخلش «کفش + جوراب» است. * زمانی که مرورگر را میبندید: 🚪 معمولاً وقتی مرورگر را میبندید یا دکمه خروج را میزنید، آن کیف پول پاره میشود یا تحویل داده میشود و اطلاعات داخلش پاک میشود (منقضی میشود). --- ### ۲. احراز هویت (Authentication) 🔐🆔 احراز هویت مثل چک کردن کارت ملی در ورودی یک سازمان مهم است. این مرحله قبل از سشن اتفاق میافتد. * چطور کار میکند؟ 🛂 شما میخواهید وارد پنل کاربری شوید. سایت از شما میخواهد ثابت کنید که «شما خودتان هستید». 🔑 شما: نام کاربری و رمز عبور را وارد میکنید. 🖥 سرور: اطلاعات را چک میکند... ✅ اگر درست بود: «خوش آمدی آقای/خانم رضایی! اجازه دارید وارد شوید.» ❌ اگر غلط بود: «شما که هستید؟ اجازه ورود ندارید!» * تفاوت با سشن: * احراز هویت (Authentication): فقط میپرسد «تو کی هستی؟» (شناسایی). * سشن (Session): میگوید «الان چه کار میکنی؟» (حافظه کوتاهمدت). --- ### 🎬 سناریوی مشترک (ورود به سایت) بیایید این دو را کنار هم ببینیم: ۱. مرحله ۱: احراز هویت (Authentication) 🔐 شما به درِ سایت میرسید و میگویید: «من علی هستم و رمزم ۱۲۳۴ است.» 🛂 نگهبان (سرور): کارت ملی شما را چک میکند، میبیند درست است و میگوید: «تایید شد! شما علی هستید.» ۲. مرحله ۲: ساخت سشن (Session Creation) 🧠 حالا که سرور فهمید شما علی هستید، یک سشن برایتان میسازد. 🖥 سرور: «چون تو علی هستی، من یک سشن باز میکنم و داخلش مینویسم
User = Aliو
IsAdmin = True.» ۳. مرحله ۳: مرور صفحات (Authorization/Usage) 🏃♂️ شما در سایت میگردید (صفحه محصولات، صفحه پروفایل و...). 🧠 سشن: در تمام این مدت، سشن شما را همراهی میکند. وقتی به صفحه «مدیریت» میروید، سرور به سشن نگاه میکند و میبیند
IsAdmin = Trueاست، پس اجازه ورود میدهد. خلاصه: * Authentication: ثابت کردن هویت (تو خودتی؟) 🔐 * Session: نگه داشتن اطلاعات موقت (تو الان چی داری؟) 🧠 امیدوارم این توضیحات با شکلکها براتون ملموس شده باشه! 😉🌹
بسیار عالی! حالا نقش کوکی (Cookie) را هم به این معادله اضافه میکنیم تا مکمل سشن و احراز هویت را بفهمید.
بیایید کوکی را مثل یک «کارت پارکینگ» یا «دستبند رنگی» در نظر بگیریم که در دست شماست.
---
### ۱. کوکی (Cookie) 🍪🎫
کوکی یک فایل کوچک متنی است که مرورگر شما (کامپیوتر شخصیتان) نگهداری میکند، نه سرور!
* چطور کار میکند؟ 💾
وقتی شما کاری را انجام میدهید (مثلاً وارد سایت میشوید)، سرور به مرورگر شما میگوید: «این یک کوکی است، آن را نگه دار.»
🖥 سرور: «بفرما این کوکی را داخل مرورگرت ذخیره کن.»
💻 مرورگر: «چشم، آن را در جیبم گذاشتم.»
* ویژگی مهم: کوکی پایدار است. حتی اگر مرورگر را ببندید و دوباره باز کنید، کوکی هنوز آنجاست (مگر اینکه تاریخ انقضای آن تمام شده باشد).
---
### ۲. رابطه کوکی و سشن (Cookie & Session) 🤝
این دو مثل دو قفل و کلید هستند با هم کار میکنند. بیایید سناریوی ورود به سایت را دوباره ببینیم:
۱. شما وارد سایت میشوید (احراز هویت): 🔐
شما نام کاربری و رمز عبور را میزنید.
🖥 سرور چک میکند و میبیند که شما هستید.
۲. سرور سشن میسازد: 🧠
سرور یک سشن (کیف پول) روی حافظه خودش باز میکند و داخلش مینویسد:
User = Ali. این سشن یک شناسه دارد، مثلاً
ID = 9999. ۳. سرور کوکی میدهد: 🍪 سرور نمیتواند آن کیف پول بزرگ (سشن) را به شما بدهد. پس فقط شناسه آن را به شما میدهد. 🖥 سرور: «آقای علی، من سشن تو را ساختم. این هم یک کوکی که داخلش نوشته شده
SessionID = 9999. این را نگه دار و هر بار که خواستی چیزی بخواهی، این را به من نشان بده.» ۴. شما در سایت میگردید: 🏃♂️ شما روی لینک «پروفایل» کلیک میکنید. 💻 مرورگر شما به صورت خودکار آن کوکی (کارت پارکینگ) را به سرور تحویل میدهد. 🖥 سرور کوکی را میگیرد، میخواند: «آها،
SessionIDبرابر با
9999است.» سپس در آرشیو خودش میگردد و سشن شماره ۹۹۹۹ را پیدا میکند و میبیند: «اوه! این سشن متعلق به علی است.» ✅ اجازه ورود صادر شد. خلاصه رابطه: * سشن: اطلاعات واقعی و مهم روی سرور است (پول و وسایل داخل صندوق). 🧠 * کوکی: کلیدِ دسترسی به آن اطلاعات است که در جیب شماست. 🗝🍪 --- ### ۳. رابطه کوکی و احراز هویت (Cookie & Auth) 🔑 در روشهای جدیدتر (مثل JWT یا توکنها)، کوکی نقش مهمتری بازی میکند. * روش سنتی (Session-Based): کوکی فقط یک شماره تلفن (Session ID) بود که سرور را صدا میزد. * روش مدرن (Token-Based): گاهی اوقات، سرور اطلاعات هویتی شما را رمزگذاری میکند و مستقیماً داخل خود کوکی میگذارد. 🍪 کوکی: «من حاوی اطلاعاتی هستم که میگویم من علی هستم و تا ۲۴ ساعت اعتبار دارم.» در این حالت، سرور نیازی نیست در حافظه خودش بگردد؛ فقط کوکی را چک میکند و اگر رمز درست بود، تایید میکند. --- ### 🎬 تشبیه نهایی (پارکینگ مجلل) ۱. احراز هویت (Authentication): 🛂 شما به پارکینگ میرسید و پلیس چک میکند که گواهینامه دارید یا نه. اگر داشتید، اجازه ورود میدهد. ۲. سشن (Session): 🏢 پارکینگ یک صندوق امانات (Safe) به شما میدهد. شما وسایل باارزشتان را در آن صندوق میگذارید. این صندوق در اتاق مدیر است (روی سرور). ۳. کوکی (Cookie): 🎫 مدیر به شما یک دستبند پلاستیکی یا یک کارت مغناطیسی میدهد. این دستبند در دست شماست (روی مرورگر شما). هر بار که بخواهید به صندوقتان دسترسی پیدا کنید، دستبند را به دستگاه میزنید. دستگاه میفهمد این دستبند متعلق به صندوق شماره ۵ است و در را باز میکند. نتیجه: * بدون **احراز هویت**، اصلاً وارد پارکینگ نمیشوید. * بدون **سشن**، جایی ندارید که اطلاعاتتان را نگه دارید. * بدون **کوکی**، هر بار که میخواهید به صندوقتان برسید، باید هویتتان را دوباره اثبات کنید! کوکی باعث میشود سرور شما را «بشناسد» بدون اینکه دوباره رمز عبور بپرسد. 🚀