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
مشاهده در ایتا
دانلود
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
هنوز ادامه دارد و همه جوره پروژه ساخته میشه حتی برای مبتدیان
کدهای_تصادفی_در_C_و_ASP.mp3
زمان: حجم: 14.8M
کدهای تصادفی در #C و ASP.Net Core ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
کدهای تصادفی در #C و ASP.Net Core ساخته شده از هوش مصنوعی
درباره‌ی انواع روش‌های تولید اعداد تصادفی در C# و ASP.NET Core صحبت کنیم. این موضوع هم برای امنیت مهمه، هم برای کاربردهایی مثل OTP، بازی‌ها، یا انتخاب‌های تصادفی. --- 🎙️ بخش اول: کلاس Random — ساده و سریع کلاس Random رایج‌ترین روش تولید عدد تصادفی در C# هست. برای تولید عدد بین ۰ تا ۹۹۹۹: csharp var rand = new Random(); int code = rand.Next(0, 10000); 🔸 مزایا: ساده، سریع، مناسب برای کاربردهای عمومی 🔸 معایب: قابل پیش‌بینی در شرایط خاص، به‌ویژه در امنیت --- 🎙️ بخش دوم: RandomNumberGenerator — امن و رمزنگاری‌شده برای تولید عدد تصادفی امن، مخصوصاً در احراز هویت یا رمز عبور، از RandomNumberGenerator استفاده می‌کنیم: csharp using System.Security.Cryptography; byte[] bytes = new byte[4]; RandomNumberGenerator.Fill(bytes); int secureCode = BitConverter.ToInt32(bytes, 0) % 900000 + 100000; 🔐 این روش برای تولید OTP یا کدهای تأیید بسیار مناسب‌تره چون از الگوریتم‌های رمزنگاری استفاده می‌کنه. --- 🎙️ بخش سوم: Guid — شناسه یکتا با ساختار تصادفی برای تولید شناسه‌های یکتا، از Guid.NewGuid() استفاده می‌شه: csharp var id = Guid.NewGuid().ToString(); 🔸 کاربرد: شناسه سفارش، توکن‌های تأیید، لینک‌های بازگشتی 🔸 مزیت: یکتا بودن در سطح جهانی --- 🎙️ بخش چهارم: استفاده در ASP.NET Core در پروژه‌های ASP.NET Core، این روش‌ها معمولاً در سناریوهای زیر استفاده می‌شن: - تولید کد تأیید برای پیامک یا ایمیل - ساخت لینک‌های بازگشتی برای پرداخت یا ثبت‌نام - تولید رمزهای موقت یا توکن‌های امنیتی - انتخاب تصادفی از لیست‌ها یا داده‌ها برای ذخیره‌سازی این کدها، می‌تونیم از Session، Redis، یا دیتابیس استفاده کنیم. همچنین می‌تونیم زمان انقضا یا محدودیت دفعات استفاده براشون تعریف کنیم. --- 🎙️ بخش پنجم: نکته‌های تکمیلی برای توسعه‌دهنده‌ها - همیشه برای امنیت از RandomNumberGenerator استفاده کن - برای تست‌پذیری، می‌تونی از مقدار ثابت در Random(seed) استفاده کنی - برای تولید رشته تصادفی، می‌تونی از ترکیب کاراکترها و حلقه استفاده کنی - برای جلوگیری از تکرار، از تاریخ و زمان در ترکیب با عدد تصادفی استفاده کن
پازل_Claim_در_ASP.mp3
زمان: حجم: 18.3M
پازل Claim در ASP.Net Core ساخته شده از هوش مصنوعی
پروژه ASP.Net Core MVC (وب و سی شارپ)
پازل Claim در ASP.Net Core ساخته شده از هوش مصنوعی
مفهوم Claim در ASP.NET Core MVC صحبت کنیم—یکی از پایه‌های مهم در احراز هویت و کنترل دسترسی که خیلی‌ها ازش غافل می‌شن. --- 🎙️ بخش اول: Claim یعنی چی؟ در دنیای برنامه‌نویسی، Claim یعنی «ادعا» یا «اطلاعاتی درباره‌ی هویت کاربر» که توسط سیستم احراز هویت ثبت می‌شه. مثلاً وقتی کاربر وارد سایت می‌شه، سیستم می‌تونه ادعا کنه که: - این کاربر ایمیلش فلان است - نقشش "مدیر" است - کشورش "ایران" است این اطلاعات به شکل Claim ذخیره می‌شن و می‌تونن در طول جلسه کاربر برای تصمیم‌گیری استفاده بشن. --- 🎙️ بخش دوم: Claim در ASP.NET Core MVC چطور استفاده می‌شه؟ در ASP.NET Core، Claimها معمولاً در کنار Identity و Authentication استفاده می‌شن. وقتی کاربر لاگین می‌کنه، می‌تونیم Claimها رو بهش اضافه کنیم: csharp var claims = new List<Claim> { new Claim(ClaimTypes.Name, user.UserName), new Claim(ClaimTypes.Role, "Admin"), new Claim("Country", "Iran") }; var identity = new ClaimsIdentity(claims, "Login"); var principal = new ClaimsPrincipal(identity); await HttpContext.SignInAsync(principal); 🔐 حالا در هر جای پروژه، می‌تونی این اطلاعات رو بخونی: csharp var userName = User.FindFirst(ClaimTypes.Name)?.Value; var role = User.FindFirst(ClaimTypes.Role)?.Value; var country = User.FindFirst("Country")?.Value; --- 🎙️ بخش سوم: کاربردهای Claim در پروژه واقعی Claimها برای کنترل دسترسی خیلی مفیدن. مثلاً: - فقط کاربرانی که نقش "مدیر" دارن بتونن وارد پنل مدیریت بشن - فقط کسانی که کشورشون "ایران" هست بتونن ثبت‌نام کنن - نمایش محتوای خاص بر اساس سن یا جنسیت کاربر > این یعنی امنیت و شخصی‌سازی، بدون نیاز به کوئری‌های سنگین در هر درخواست. --- 🎯 نکته‌های تکمیلی برای توسعه‌دهنده‌ها - Claimها در کنار JWT هم استفاده می‌شن برای APIهای امن - می‌تونی Claim دلخواه بسازی، مثل "IsSubscriber" یا "PreferredLanguage" - برای تست، از ابزارهایی مثل JWT.io استفاده کن تا Claimها رو ببینی