فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
فعلا قابلیت پخش رسانه در مرورگر فراهم نیست
مشاهده در پیام رسان ایتا
پروژه ASP.Net Core MVC (وب و سی شارپ)
:::writing
📦 آشنایی با Areas و Identity در ASP.NET Core
وقتی یک پروژه ASP.NET Core بزرگتر میشود، مدیریت صفحهها، کنترلرها و بخشهای مختلف سختتر میشود. برای همین مایکروسافت دو مفهوم مهم را ارائه کرده است: Areas و Identity.
بیایید خیلی ساده و کاربردی با آنها آشنا شویم. 👇
---
## 🧭 Areas چیست؟
Areas راهی برای تقسیم یک پروژه بزرگ به چند بخش منطقی است.
فرض کنید یک سایت دارید که شامل این قسمتهاست:
👤 بخش کاربران
🛒 بخش فروشگاه
🛠 بخش مدیریت (Admin)
اگر همه اینها در یک پوشه قرار بگیرند، پروژه خیلی شلوغ میشود.
اینجاست که Areas کمک میکند.
با Areas میتوانید پروژه را به چند ناحیه (Area) تقسیم کنید.
مثلاً:
📁 Admin
📁 Customer
📁 Identity
هر کدام از این Areas میتوانند کنترلر، ویو و مدلهای مخصوص خودشان را داشته باشند.
به زبان ساده:
👉 Areas مثل یک پروژه کوچک داخل پروژه اصلی هستند.
مزایا:
✅ سازماندهی بهتر پروژه
✅ مناسب برای پروژههای بزرگ
✅ جدا کردن بخشهای مختلف سایت
---
## 🔐 Identity چیست؟
ASP.NET Core Identity یک سیستم آماده برای مدیریت کاربران است.
با Identity میتوانید خیلی راحت این قابلیتها را به سایت اضافه کنید:
👤 ثبتنام کاربران (Register)
🔑 ورود به سیستم (Login)
🚪 خروج از حساب (Logout)
🔒 تغییر رمز عبور
📧 تأیید ایمیل
🛡 مدیریت نقشها (Roles)
⛔️ جلوگیری از دسترسی غیرمجاز
به عبارت ساده:
Identity یک سیستم کامل احراز هویت و مدیریت کاربران است.
---
## 📁 چرا Identity داخل Areas قرار میگیرد؟
در ASP.NET Core معمولاً Identity داخل یک Area به نام Identity قرار میگیرد.
مثلاً ساختار پروژه ممکن است اینطور باشد:
📁 Areas
📁 Identity
📁 Account
📁 Manage
این کار چند مزیت دارد:
✅ جدا شدن صفحات احراز هویت از بقیه سایت
✅ مرتبتر شدن ساختار پروژه
✅ امکان شخصیسازی صفحات ورود و ثبتنام
---
## 🧠 تفاوت Identity با Authorization
خیلیها این دو را اشتباه میگیرند.
🔐 Authentication (Identity)
یعنی: کاربر چه کسی است؟
مثال: Login
🛡 Authorization
یعنی: کاربر چه اجازهای دارد؟
مثال: دسترسی فقط برای Admin
---
## 🎯 جمعبندی
✅ Areas برای تقسیم پروژه به بخشهای مختلف استفاده میشود.
✅ Identity سیستم مدیریت کاربران در ASP.NET Core است.
✅ معمولاً Identity در یک Area جداگانه قرار میگیرد تا پروژه مرتبتر باشد.
---
اگر دوست دارید درباره این موضوعات بیشتر بدانید:
🔥 Role Based Authorization
🔥 ساخت Admin Panel
🔥 مدیریت کاربران
🔥 امنیت در ASP.NET Core
حتماً دنبال کنید. 🚀
:::
پروژه ASP.Net Core MVC (وب و سی شارپ)
من کاری کردم که همه را خودتون فارسی کنید
Areas.zip
حجم:
22.3K
تکمیل کردم و خودتون به پروژه اضافه کنید
فرض کنیم یک محصول در فروشگاه فقط ۱ عدد موجودی دارد.
دو کاربر تقریباً همزمان میخواهند آن را بخرند.
---
## سناریو ساده
موجودی محصول: 1
👤 کاربر A وارد صفحه محصول میشود
👤 کاربر B هم همان لحظه وارد همان صفحه میشود
هر دو صفحه نشان میدهد:
📦 موجودی: 1
حالا هر دو تقریباً همزمان روی خرید کلیک میکنند.
---
# اگر سیستم کنترل همزمانی نداشته باشد
اتفاقی که میافتد:
1️⃣ درخواست کاربر A به سرور میرسد
سیستم میبیند موجودی = 1
✅ خرید انجام میشود
📦 موجودی میشود 0
2️⃣ تقریباً همزمان درخواست کاربر B هم میرسد
سیستم هنوز فکر میکند موجودی = 1 (چون همزمان خوانده شده)
✅ خرید او هم انجام میشود
نتیجه:
🧾 دو سفارش ثبت شده
📦 ولی در واقع فقط ۱ محصول وجود داشته
این مشکل را میگویند:
⚠️ Race Condition
(رقابت بین درخواستها)
---
# در سیستم درست چه باید اتفاق بیفتد
سیستم باید اجازه بدهد:
✅ فقط یک نفر خرید موفق داشته باشد
❌ نفر دوم پیام بگیرد
مثلاً:
👤 کاربر A → خرید موفق ✅
👤 کاربر B → پیام:
🚫 "متأسفانه موجودی محصول تمام شده است"
---
# مثال واقعی فروشگاه
موجودی کفش: 1
👤 علی → خرید میکند ✅
👤 رضا → همزمان خرید میکند ❌
سیستم باید بگوید:
📢 "این کالا لحظاتی قبل توسط کاربر دیگری خریداری شد."
---
# چرا این مشکل رخ میدهد؟
چون در برنامهها معمولاً این اتفاق میافتد:
1️⃣ موجودی از دیتابیس خوانده میشود
2️⃣ بررسی میشود آیا > 0 است
3️⃣ بعد سفارش ثبت میشود
اگر دو درخواست خیلی نزدیک به هم بیایند، هر دو مرحله 1 را با همان مقدار انجام میدهند.
---
# نتیجه نهایی
اگر کنترل همزمانی نباشد:
⚠️ ممکن است چند نفر یک کالای آخر را بخرند.
اگر سیستم درست طراحی شده باشد:
✅ فقط یک نفر موفق میشود
❌ بقیه پیام اتمام موجودی میگیرند.
1) سشن (Session)
📌 چیه؟
سشن یک فضای موقت روی سروره که اطلاعات کاربر را فقط تا زمانی که مرورگر باز است یا مدت زمان مشخصی گذشته نشده نگه میدارد.
📌 کوکی دارد؟
بله، اما فقط یک کوکی کوچک نگه میدارد که اسمش سشن آیدی است. اطلاعات اصلی روی سرور است، *نه داخل کوکی*.
📌 مثال:
فرض کن وارد یک فروشگاه اینترنتی شدی و چند کالا را در سبد خرید گذاشتی 🛒
فروشگاه این اطلاعات را در Session ذخیره میکند.
اگر مرورگر را ببندی سبد خرید پاک میشود.
📌 تشبیه:
سشن شبیه رسید شمارهداری است که رستوران بهت میدهد.
تو رسید را داری (کوکی)، ولی غذا داخل آشپزخانه است (سرور). 🍲
-------------------------------------
2) کوکی (Cookie)
📌 چیه؟
کوکی یک فایل کوچک داخل مرورگر کاربر است که توسط سرور ذخیره میشود.
📌 اطلاعات کجا ذخیره میشود؟
خودِ اطلاعات مستقیم داخل مرورگر است.
📌 مثال:
وبسایتی که میخواهد زبان مورد علاقه شما را به یاد داشته باشد 🌍
مثلاً همیشه فارسی را انتخاب میکنی.
این را در کوکی ذخیره میکند.
📌 تشبیه:
کوکی شبیه یادداشتی است که توی جیبت میگذاری تا یادت نره چی دوست داری. 📝
-------------------------------------
3) Identity
📌 چیه؟
Identity یک فریمورک کامل برای مدیریت کاربران است:
- ثبتنام
- ورود
- خروج
- نقشها
- رمز عبور
- ایمیل، شماره موبایل و…
📌 از کوکی استفاده میکند؟
بله. وقتی کاربر لاگین میکند Identity یک کوکی احراز هویت ایجاد میکند تا دفعهی بعد بدون لاگین دوباره شناخته شود.
📌 مثال:
وقتی وارد پنل کاربری یک سایت میشوی 🙂 و دفعه بعدی که وارد میشوی، بدون ورود دوباره کارت را میشناسد — این کار Identity است.
📌 تشبیه:
Identity
مثل سیستم عضویت باشگاه بدنسازی است 💳
یک کارت عضویت داری، و باشگاه تو را میشناسد.
-------------------------------------
4) Authorization
(اتورایزیشن: مجوز دسترسی)
📌 چیه؟
Authorization
مشخص میکند چه کسی به کجا دسترسی دارد.
📌 به چه چیزی وابسته است؟
وابسته به این است که Identity اطلاعات کاربر را شناسایی کرده باشد (از طریق کوکی).
📌 مثال:
- مدیر میتواند وارد پنل مدیریت شود 👨💼
- کاربر عادی نمیتواند 🚫
📌 تشبیه:
Authorization
مثل نگهبان دم در باشگاهه 🧹
کارتت (Identity) را نگاه میکند
اگر مربی باشی، اجازه ورود به اتاق مربیان را میدهد
اگر نباشی، جلو راهت را میگیرد.
-------------------------------------
جمعبندی تفاوتها (با یک مثال کامل)
فرض کن وارد یک سایت میشوی:
1) وارد سایت میشوی و لاگین میکنی
Identity →
تو را شناسایی و تأیید میکند 🙋♂️
Identity →
یک کوکی احراز هویت در مرورگرت میگذارد 🍪
2) میروی به پنل مدیریت
Authorization →
بررسی میکند که آیا نقش تو "مدیر" هست یا نه 🚦
3) چند کالا به سبد اضافه میکنی
Session →
آنها را موقتاً در سرور نگه میدارد 🛒
4) مرورگر را ببندی سبد خرید پاک میشود
Session
تمام میشود ❌
اما چون لاگین بودی، دفعه بعد که بیایی Identity از طریق کوکی تو را دوباره میشناسد ✔️