eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
121 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
رمزگذاری پسوردها در برنامه‌های وب بسیار مهم است تا از امنیت کاربران و اطلاعات آن‌ها محافظت شود. استفاده از الگوریتم‌های رمزنگاری مطمئن به جلوگیری از دسترسی غیرمجاز به پسوردها کمک می‌کند. در ASP.NET Core، می‌توانید از کتابخانه‌های استاندارد برای رمزگذاری پسوردها استفاده کنید. بیایید یک روش ساده برای انجام این کار را بررسی کنیم. 1. استفاده از ASP.NET Core Identity ASP.NET Core Identity شامل ابزارها و سرویس‌هایی برای مدیریت کاربران و رمزگذاری پسوردها است. در اینجا نحوه پیکربندی و استفاده از آن آورده شده است. نصب ASP.NET Core Identity: ابتدا باید بسته‌های مورد نیاز را به پروژه خود اضافه کنید. می‌توانید این کار را از طریق NuGet Package Manager انجام دهید: Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer پیکربندی ASP.NET Core Identity: سپس باید Identity را در متد ConfigureServices در Startup.cs پیکربندی کنید: csharp public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<IdentityUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); services.AddControllersWithViews(); } 2. ایجاد مدل کاربر و دیتابیس ایجاد مدل کاربر و دیتابیس با استفاده از Entity Framework Core و ASP.NET Core Identity. csharp public class ApplicationDbContext : IdentityDbContext<IdentityUser> { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } } 3. استفاده از UserManager برای مدیریت کاربران و رمزگذاری پسوردها استفاده از UserManager برای ایجاد کاربران و رمزگذاری پسوردها. ایجاد کاربر جدید: csharp public async Task<IActionResult> Register(string username, string password) { var user = new IdentityUser { UserName = username }; var result = await _userManager.CreateAsync(user, password); if (result.Succeeded) { return Ok("User created successfully"); } else { return BadRequest("Failed to create user"); } } 4. استفاده از PasswordHasher به صورت مستقل اگر نمی‌خواهید از ASP.NET Core Identity استفاده کنید، می‌توانید از PasswordHasher به صورت مستقل برای رمزگذاری پسوردها استفاده کنید. مثال مستقل: csharp public class PasswordService { private readonly IPasswordHasher<IdentityUser> _passwordHasher; public PasswordService() { _passwordHasher = new PasswordHasher<IdentityUser>(); } public string HashPassword(string password) { var user = new IdentityUser(); return _passwordHasher.HashPassword(user, password); } public bool VerifyPassword(string hashedPassword, string providedPassword) { var user = new IdentityUser(); var result = _passwordHasher.VerifyHashedPassword(user, hashedPassword, providedPassword); return result == PasswordVerificationResult.Success; } } // استفاده از PasswordService برای رمزگذاری و اعتبارسنجی پسوردها var passwordService = new PasswordService(); string hashedPassword = passwordService.HashPassword("MySecurePassword"); bool isPasswordValid = passwordService.VerifyPassword(hashedPassword, "MySecurePassword"); نتیجه‌گیری رمزگذاری پسوردها و ذخیره آن‌ها در دیتابیس به امنیت کاربران و اطلاعات آن‌ها کمک می‌کند. ASP.NET Core Identity ابزارهای قدرتمندی برای مدیریت کاربران و رمزگذاری پسوردها فراهم می‌کند، اما شما می‌توانید از PasswordHasher به صورت مستقل نیز استفاده کنید.
ذخیره اطلاعات لاگین در کوکی مرورگر یکی از روش‌های معمول برای مدیریت سشن‌های کاربر است. با این حال، باید با احتیاط این کار را انجام دهید تا امنیت اطلاعات کاربر حفظ شود. بیایید به نحوه انجام این کار در ASP.NET Core بپردازیم. مرحله 1: ایجاد و ذخیره‌سازی کوکی لاگین می‌توانید اطلاعات لاگین کاربر را پس از احراز هویت در کوکی مرورگر ذخیره کنید. برای این کار می‌توانید از متد SignInAsync استفاده کنید. مثال: csharp public async Task<IActionResult> Login(string username, string password) { // اعتبارسنجی کاربر var user = await _userManager.FindByNameAsync(username); if (user != null && await _userManager.CheckPasswordAsync(user, password)) { // ایجاد لیست کلایم‌ها (Claims) var claims = new List<Claim> { new Claim(ClaimTypes.Name, user.UserName), new Claim(ClaimTypes.NameIdentifier, user.Id), }; // ایجاد هویت کلایم (ClaimsIdentity) var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); // گزینه‌های احراز هویت var authProperties = new AuthenticationProperties { IsPersistent = true, // کوکی پایدار باشد ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(30) // تنظیم تاریخ انقضای کوکی }; // ورود به سیستم و ایجاد کوکی await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), authProperties); return RedirectToAction("Index", "Home"); } // بازگشت به صفحه لاگین در صورت عدم موفقیت در احراز هویت return View("Login"); } مرحله 2: پیکربندی احراز هویت کوکی در Startup.cs باید احراز هویت کوکی را در متدهای ConfigureServices و Configure پیکربندی کنید. ConfigureServices: csharp public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Account/Login"; // مسیر صفحه لاگین options.LogoutPath = "/Account/Logout"; // مسیر صفحه لاگ‌آوت options.AccessDeniedPath = "/Account/AccessDenied"; // مسیر صفحه دسترسی ممنوع }); services.AddControllersWithViews(); } Configure: csharp public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); // استفاده از میان‌افزار احراز هویت app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } مرحله 3: مدیریت لاگ‌آوت برای حذف کوکی و خروج کاربر از سیستم، می‌توانید از متد SignOutAsync استفاده کنید. مثال لاگ‌آوت: csharp public async Task<IActionResult> Logout() { await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); return RedirectToAction("Index", "Home"); } امنیت کوکی برای اطمینان از امنیت کوکی‌ها، مطمئن شوید که از گزینه‌های زیر استفاده می‌کنید: HttpOnly: کوکی‌ها را به گونه‌ای تنظیم کنید که فقط از طریق HTTP قابل دسترسی باشند و جاوااسکریپت نتواند به آن‌ها دسترسی پیدا کند. Secure: کوکی‌ها را به گونه‌ای تنظیم کنید که فقط در ارتباطات HTTPS ارسال شوند. SameSite: از ویژگی SameSite برای جلوگیری از ارسال کوکی‌ها در درخواست‌های متقاطع استفاده کنید. نتیجه‌گیری با استفاده از روش‌های بالا، می‌توانید اطلاعات لاگین کاربران را به صورت امن در کوکی مرورگر ذخیره و مدیریت کنید. این کار به شما کمک می‌کند تا سشن‌های کاربران را مدیریت کرده و تجربه کاربری بهتری فراهم کنید.
من دو تا قالب های HTML رایگان پیدا کردم قالب فروشگاه و قالب ادمین که در پروژه ASP.NET Core هفته بعد شروع به کد نویسی می کنیم
قالب های رایگان html فروشگاه و ادمین
Test_Store.zip
حجم: 2.2M
بیایید هر بخش را به تفصیل بررسی کنیم تا مطمئن شویم که همه چیز به درستی تنظیم شده است:
blank solution : Test_Store │ ├── Folder: Doc │ ├── Folder: Src │ ├── Folder: Common │ │ └── library: Test_Store.Common │ │ │ ├── Folder: Core │ │ ├── library: Test_Store.Application │ │ └── library: Test_Store.Domain │ │ │ ├── Folder: Infrastructure │ │ ├── library: Test_Store.Infrastructure │ │ └── library: Test_Store.Persistence │ │ │ └── Folder: Presentation │ └── ASP.NET Core: EndPoint.Site │ └── Folder: Test توضیحات: 1. blank solution : Test_Store این پوشه اصلی پروژه شماست که سایر پوشه‌ها و کتابخانه‌ها در آن قرار دارند. 2. Folder: Doc این پوشه برای ذخیره مستندات پروژه، مانند راهنماها، مستندات طراحی و هر نوع اطلاعات مرتبط با پروژه، مورد استفاده می‌گیرد. 3. Folder: Src این پوشه شامل کد منبع (Source Code) پروژه است و به زیرپوشه‌های مختلف تقسیم شده است: 3-1. Folder: Common: شامل کتابخانه‌های مشترکی است که توسط سایر بخش‌های پروژه استفاده می‌شوند. - library: Test_Store.Common: شامل کدهای مشترک و ابزارهای کمکی که بین تمامی بخش‌های پروژه استفاده می‌شوند. 3-2. Folder: Core: شامل منطق کسب‌وکار و مدل‌های دامنه (Domain Models) پروژه است. - library: Test_Store.Application: شامل منطق کسب‌وکار و موارد استفاده (Use Cases) پروژه. - library: Test_Store.Domain: شامل مدل‌های دامنه و قوانین کسب‌وکار اصلی. 3-3. Folder: Infrastructure: شامل کدهای زیرساختی و سرویس‌هایی است که توسط پروژه استفاده می‌شوند. - library: Test_Store.Infrastructure: شامل پیاده‌سازی سرویس‌های زیرساختی مانند ارتباط با فایل سیستم، APIهای خارجی و غیره. - library: Test_Store.Persistence: شامل کدهای مربوط به ذخیره‌سازی داده‌ها، مانند DbContext و مدل‌های پایگاه داده. 3-4. Folder: Presentation: شامل لایه ارائه (Presentation Layer) پروژه است. - ASP.NET Core: EndPoint.Site: پروژه ASP.NET Core MVC که برای مدیریت رابط کاربری و APIهای وب استفاده می‌شود. 4. Folder: Test این پوشه می‌تواند شامل تست‌های واحد (Unit Tests) و یکپارچه (Integration Tests) باشد تا به بررسی و اعتبارسنجی عملکرد کدهای شما کمک کند.
Test_Store2.zip
حجم: 38.2M
زمان زیادی طول کشید تا کدها را برسی کنم و اشکالاتم را برطرف کنم من هم یاد می گیرم و به اشتراک می گذارم پیاده سازی قالب ادمین به پروژه آدرس پنل: localhost:7236/admin/users/index
Test_Store3.zip
حجم: 37M
پیاده سازی قالب فروشگاه