eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
119 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
احراز_هویت_پیامکی_در_ASP.mp3
زمان: حجم: 7.6M
احراز هویت پیامکی در ASP.Net Core ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
احراز هویت پیامکی در ASP.Net Core ساخته شده از هوش مصنوعی
پادکست، با اصلاح کامل پنل‌های پیامکی، کتابخانه‌ها، و اضافه شدن بخش مدیریت پیام‌ها از طریق داشبورد پنل‌ها. این نسخه هم فنیه، هم کاربردی، و هم خوش‌بیان برای شنونده‌های حرفه‌ای. --- 🎙️ بخش اول: تولید اعداد تصادفی برای اعتبارسنجی سلام به همه‌ی شنونده‌های عزیز! توی این قسمت، می‌خوایم درباره‌ی یکی از پایه‌ای‌ترین قابلیت‌ها در اپلیکیشن‌های تحت وب صحبت کنیم: تولید اعداد تصادفی برای ارسال پیامک تأیید هویت. در ASP.NET Core MVC، برای تولید کد اعتبارسنجی امن، بهتره از RandomNumberGenerator استفاده کنیم: using System.Security.Cryptography; byte[] bytes = new byte[4]; RandomNumberGenerator.Fill(bytes); int code = BitConverter.ToInt32(bytes, 0) % 900000 + 100000; // عدد ۶ رقمی این کد معمولاً در Session یا Redis ذخیره می‌شه و بعداً با ورودی کاربر مقایسه می‌شه. --- 🎙️ بخش دوم: ارسال پیامک با پنل‌های معتبر برای ارسال پیامک، از پنل‌های حرفه‌ای و معتبر استفاده می‌کنیم که API قدرتمند و داشبورد مدیریتی دارن: ۱ـ کاوه‌نگار ارسال OTP، گزارش تحویل، RESTful API kavenegar.com ۲ـ SMS.ir ارسال زمان‌دار، دفترچه تلفن، گزارش‌گیری sms.ir ۳ـ فراپیامک ارسال منطقه‌ای، خطوط اختصاصی، پیامک انبوه farapayamak.ir پس از ثبت‌نام در این سایت‌ها، به پنل کاربری دسترسی پیدا می‌کنیم که در اون می‌تونیم: - محتوای پیام‌های ارسال‌شده رو ببینیم - وضعیت تحویل پیام‌ها رو بررسی کنیم - لیست مخاطبین و گروه‌بندی‌ها رو مدیریت کنیم - گزارش‌های آماری و نمودارهای ارسال رو دریافت کنیم --- 🎙️ بخش سوم: ارسال پیامک از طریق API برای اتصال به API، می‌تونیم از HttpClient یا Refit استفاده کنیم. مثال ساده با HttpClient برای کاوه‌نگار: var client = new HttpClient(); var content = new StringContent(JsonConvert.SerializeObject(new { receptor = userPhone, message = $"کد شما: {code}" }), Encoding.UTF8, "application/json"); await client.PostAsync("https://api.kavenegar.com/v1/YOURAPIKEY/sms/send.json", content); --- 🎙️ بخش چهارم: مقایسه کد دریافتی با کد تولیدشده بعد از ارسال پیامک، کاربر کد رو وارد می‌کنه و ما اون رو با کد ذخیره‌شده مقایسه می‌کنیم: if (inputCode == HttpContext.Session.GetString("otpCode")) { // اعتبارسنجی موفق } else { // کد اشتباه است } برای امنیت بیشتر، می‌تونیم زمان انقضا برای کد بذاریم یا تعداد دفعات ورود رو محدود کنیم. --- 🎙️ بخش پنجم: نصب کتابخانه‌ها در ویژوال استودیو برای استفاده از کتابخانه‌های موردنیاز، از NuGet استفاده می‌کنیم: Install-Package System.Text.Json Install-Package Newtonsoft.Json Install-Package Refit Install-Package StackExchange.Redis > توجه: System.Security.Cryptography به‌صورت پیش‌فرض در .NET Core وجود داره. --- 🎙️ بخش ششم: انواع ارسال پیامک پنل‌های پیامکی معمولاً این نوع ارسال‌ها رو پشتیبانی می‌کنن: 1. ارسال پیامک ساده (متنی) 2. ارسال پیامک اعتبارسنجی (OTP) 3. ارسال پیامک تبلیغاتی یا انبوه 4. ارسال پیامک زمان‌بندی‌شده یا خودکار --- 🎯 نکته‌های تکمیلی برای توسعه‌دهنده‌ها - برای استفاده از Redis، سرور Redis رو روی لوکال یا فضای ابری مثل Azure یا Docker راه‌اندازی کن - برای استفاده از Refit، ابتدا Interface مربوط به API رو تعریف کن و بعد با RestService.For<T>() کلاینت بساز - کلید API رو از پنل پیامکی دریافت کن و در appsettings.json ذخیره کن: json "Kavenegar": { "ApiKey": "YOURAPIKEY" } --- با این پادکست، نه‌تنها با نحوه‌ی تولید و ارسال کد اعتبارسنجی آشنا شدی، بلکه یاد گرفتی چطور پیام‌ها رو از طریق پنل مدیریت کنی و گزارش بگیری.
📁 مقایسه دو پروژه ASP.NET Core MVC در این پست دو نسخه از پروژه فروشگاه محصول رو قرار دادم: ✅ ProductShopC - ساختار ساده و مستقیم - منطق برنامه داخل کنترلرها نوشته شده - مناسب برای شروع یادگیری MVC و آشنایی با Entity Framework ✅ ProductShopRS - ساختار حرفه‌ای با معماری Repository + Service - جداسازی کامل منطق تجاری از کنترلرها - قابل توسعه، تست‌پذیر و مناسب برای پروژه‌های واقعی
ProductShopC (2).zip
حجم: 24.8M
📌 به‌روزرسانی پروژه ProductShopC در نسخه‌ی اولیه‌ی پروژه ProductShopC، فرم ویرایش ویژگی‌ها به‌درستی مقدار جدید را ذخیره نمی‌کرد. در این اصلاح، منطق ویرایش ویژگی‌ها در کنترلر بازنویسی شد تا تغییرات متن ویژگی‌ها به‌درستی در دیتابیس ذخیره شوند. ✅ حالا هنگام ویرایش محصول، می‌تونید متن ویژگی‌ها را تغییر دهید و مطمئن باشید که تغییرات اعمال می‌شوند. 📁 پروژه دوم (ProductShopRS) با معماری سرویس و ریپوزیتوری از ابتدا این قابلیت را دارد. اما در این پست، نسخه‌ی ساده‌ی پروژه اول نیز اصلاح شده و آماده استفاده است.
## ✅ دلیل اصلی: هر پروژه کوکی احراز هویت خودش را دارد وقتی با ASP.NET Core از احراز هویت مبتنی بر کوکی (Cookie Authentication) استفاده می‌کنی، اطلاعات لاگین‌شده‌ی کاربر در قالب یک کوکی در مرورگر ذخیره می‌شه. اما این کوکی به نام پروژه (یا دامنه) وابسته است. ### یعنی چی؟ - وقتی وارد پروژه اول (مثلاً
ProductShopC
) می‌شی، کوکی‌ای با نام خاصی ذخیره می‌شه - وقتی وارد پروژه دوم (
ProductShopRS
) می‌شی، اون یکی پروژه کوکی خودش رو می‌نویسه - چون هر دو پروژه روی یک دامنه محلی (مثلاً
localhost
) اجرا می‌شن، کوکی جدید قبلی رو جایگزین می‌کنه - نتیجه: پروژه اول فکر می‌کنه کاربر از سیستم خارج شده --- ## 🛠 راه‌حل‌ها ### 1. استفاده از نام کوکی متفاوت برای هر پروژه در Program.cs یا `Startup.cs`، می‌تونی نام کوکی را برای هر پروژه متفاوت تنظیم کنی: csharp builder.Services.ConfigureApplicationCookie(options => { options.Cookie.Name = "ProductShopC.Auth"; }); و در پروژه دوم: csharp builder.Services.ConfigureApplicationCookie(options => { options.Cookie.Name = "ProductShopRS.Auth"; }); > حالا هر پروژه کوکی خودش رو داره و لاگین‌ها تداخل نمی‌کنن. --- ### 2. اجرای پروژه‌ها روی پورت یا دامنه متفاوت اگر پروژه‌ها رو روی پورت‌های مختلف اجرا کنی (مثلاً یکی روی
localhost:5000
و دیگری روی
localhost:6000
)، کوکی‌ها جدا می‌مونن. --- ### 3. استفاده از محیط‌های جداگانه (مثلاً IIS یا Docker) در محیط واقعی، هر پروژه روی دامنه خودش اجرا می‌شه و کوکی‌ها مستقل هستن. در حالت توسعه، چون هر دو روی
localhost
هستن، باید با نام کوکی یا پورت جداشون کنی. --- ## ✨ نتیجه‌گیری | راه‌حل | مزیت | |--------|------| | تغییر نام کوکی | ساده‌ترین و سریع‌ترین راه | | تغییر پورت | مناسب برای تست همزمان | | محیط جداگانه | مناسب برای پروژه‌های واقعی | --- تو داری دقیق و حرفه‌ای فکر می‌کنی، و این‌جور جزئیات نشونه‌ی رشد واقعیته. اگه خواستی، می‌تونم یه فایل تنظیمات کامل برای هر پروژه آماده کنم تا کوکی‌ها تداخل نداشته باشن. بزن بریم ، اینم یکی از اون لحظه‌های طلایی یادگیری بود 💙🧠🔐
معماری_کلین_در_ASP.mp3
زمان: حجم: 16M
معماری کلین در ASP.Net Core MVC ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
معماری کلین در ASP.Net Core MVC ساخته شده از هوش مصنوعی
انواع معماری و لایه‌ها در ASP.Net Core MVC --- 🎙️ توضیح تکمیلی: انواع معماری و لایه‌ها در طراحی نرم‌افزار در طراحی نرم‌افزار، معماری یعنی نحوه‌ی سازماندهی کدها و مسئولیت‌ها. چند مدل رایج وجود داره: - معماری سه‌لایه (Three-Tier): شامل لایه نمایش (UI)، لایه منطق (Business Logic)، و لایه داده (Data Access). ساده و مناسب پروژه‌های کوچک تا متوسط. - معماری MVC (Model-View-Controller): داده‌ها در Model، رابط کاربری در View، و کنترل جریان در Controller. پایه‌ی ASP.NET Core MVC. - معماری کلین (Clean Architecture): شامل پنج لایه مستقل: - Domain: موجودیت‌ها و منطق اصلی - Application: سرویس‌ها و Use Caseها - Infrastructure: ارتباط با سرویس‌های خارجی - Persistence: دیتابیس و Repositoryها - Presentation: رابط کاربری و APIها مزیت معماری کلین اینه که وابستگی‌ها از بیرون به درون هستن، نه برعکس—یعنی منطق اصلی پروژه همیشه مستقل باقی می‌مونه. --- 🎙️ بخش اول: چرا معماری کلین؟ معماری کلین یه سبک طراحی نرم‌افزار مدرن و قابل توسعه‌ست که هدفش جداسازی مسئولیت‌ها، کاهش وابستگی‌ها و افزایش تست‌پذیریه. در این معماری، منطق کسب‌وکار در مرکز قرار می‌گیره و لایه‌های دیگر به اون وابسته هستن—not the other way around. --- 🎙️ بخش دوم: معرفی پنج لایه اصلی 1️⃣ Domain Layer (لایه دامنه) هسته‌ی اصلی سیستم. شامل موجودیت‌ها (Entities)، قوانین کسب‌وکار، و مدل‌های اصلی. کاملاً مستقل از سایر لایه‌هاست و هیچ وابستگی به دیتابیس یا UI نداره. > مثال: کلاس User با ویژگی‌هایی مثل Name, Email, IsActive --- 2️⃣ Application Layer (لایه کاربردی) منطق اجرایی و سرویس‌های اپلیکیشن اینجا قرار می‌گیرن. شامل Use Caseها، اینترفیس‌ها، و سرویس‌هایی که با Domain تعامل دارن. > مثال: IUserService برای مدیریت کاربران، یا RegisterUserCommand --- 3️⃣ Infrastructure Layer (زیرساخت) پیاده‌سازی‌های واقعی برای اینترفیس‌های لایه Application. شامل سرویس‌های ارسال ایمیل، پیامک، فایل، و ارتباط با APIهای خارجی. > مثال: کلاس SmsSender که از ISmsService پیروی می‌کنه و به پنل پیامکی متصل می‌شه --- 4️⃣ Persistence Layer (لایه ذخیره‌سازی) مسئول ارتباط با دیتابیس. شامل Repositoryها، DbContext، و Migrationها. از Entity Framework Core یا Dapper استفاده می‌شه. > مثال: UserRepository که عملیات CRUD روی جدول کاربران انجام می‌ده --- 5️⃣ Presentation Layer (لایه نمایش) رابط کاربری پروژه. در ASP.NET Core MVC شامل Controllerها، Viewها، Razor Pages و API Endpointهاست. > مثال: UserController که اطلاعات کاربر رو از سرویس می‌گیره و به View ارسال می‌کنه --- 🎙️ بخش سوم: مزایای معماری کلین - تست‌پذیری بالا - توسعه‌پذیری و نگهداری آسان - جداسازی کامل منطق کسب‌وکار از UI و دیتابیس - پیاده‌سازی اصول SOLID و Dependency Inversion
هنوز ادامه دارد و همه جوره پروژه ساخته میشه حتی برای مبتدیان