eitaa logo
پروژه ASP.Net Core MVC (وب و سی شارپ)
120 دنبال‌کننده
168 عکس
38 ویدیو
376 فایل
❁﷽❁ آموزش 📖 برنامه نویسی ASP.Net Core MVC (وب و سی شارپ) Admin: @alialirezapanahi برنامه نویسی برنامه نویسی سی شارپ eitaa.com/sisharpapp برنامه نویسی وب eitaa.com/aspdatnet ویراستی virasty.com/alialirezapanahi آپارات aparat.com/alialirezapanahi
مشاهده در ایتا
دانلود
پروژه ASP.Net Core MVC (وب و سی شارپ)
درس آخر فروشگاه مدیریت سفارش فروشگاه و مدیریت پرداخت ها و Authorization و Authentication در ادمین
2. مدیریت خطاها: - در صورت بروز خطا در سرویس یا بازگشت نتیجه ناموفق، پیام مناسب به کاربر نمایش داده شود. 3. ثبت عملیات در لاگ: - ثبت لاگ برای عملیات اضافه کردن دسته‌بندی یا خطاهای احتمالی می‌تواند مفید باشد. --- جمع‌بندی این کنترلر به خوبی مدیریت عملیات مرتبط با دسته‌بندی‌ها را انجام می‌دهد و از اصول طراحی مناسب مانند تزریق وابستگی و استفاده از الگوی Facade بهره می‌برد. قابلیت‌هایی مانند نمایش دسته‌بندی‌ها، اضافه کردن زیرشاخه‌ها و محدود کردن دسترسی با استفاده از نقش‌ها، کد را امن و کاربردی کرده‌اند.
پروژه ASP.Net Core MVC (وب و سی شارپ)
درس آخر فروشگاه مدیریت سفارش فروشگاه و مدیریت پرداخت ها و Authorization و Authentication در ادمین
این بخش از کد مربوط به ناوبری (Navigation) در بخش مدیریت (
Admin Layout
) است و بر اساس نقش‌های کاربری (
Admin
و
Operator
) مشخص می‌کند که آیا بخش "دسته‌بندی‌ها" در منوی مدیریت نمایش داده شود یا خیر. در ادامه توضیحات کامل ارائه شده است: --- ۱. نقش‌ها و بررسی دسترسی csharp @if (ClaimUtility.GetRolse(User).Where(p => p == "Admin" || p == "Operator").Count() >= 1) شرح عملکرد: - متد ClaimUtility.GetRolse(User) لیستی از نقش‌های کاربر وارد‌شده را برمی‌گرداند. - از شرط
Where(p => p == "Admin" || p == "Operator")
استفاده می‌شود تا بررسی کند آیا کاربر نقش
Admin
یا
Operator
دارد. - اگر تعداد نقش‌ها بیشتر از 0 باشد (
Count() >= 1
)، منوی دسته‌بندی‌ها نمایش داده می‌شود. - این شرط تضمین می‌کند که فقط کاربران با نقش‌های مجاز به این بخش دسترسی داشته باشند. --- ۲. طراحی منوی "دسته‌بندی‌ها" html <li class="nav-item has-treeview "> <a href="#" class="nav-link active"> <i class="fa fa-tag"></i> <p> دسته بندی ها <i class="right fa fa-angle-left"></i> </p> </a> <ul class="nav nav-treeview"> <li class="nav-item"> <a href="~/admin/categories/" class="nav-link active"> <i class="fa fa-bookmark-o"></i> <p>دسته بندی ها </p> </a> </li> <li class="nav-item"> <a href="~/admin/categories/addnewcategory" class="nav-link active"> <i class="fa fa-plus nav-icon"></i> <p>افزودن دسته بندی جدید </p> </a> </li> </ul> </li> شرح طراحی: 1. مجموعه منو (
has-treeview
): - کلاس
nav-item has-treeview
نشان‌دهنده این است که این گزینه دارای زیرمنو است. 2. لینک اصلی منو (
nav-link active
): - لینک اصلی منو به‌صورت فعال (
active
) نشان داده شده است. -
fa fa-tag
: یک آیکون برای دسته‌بندی‌ها نمایش داده می‌شود. - متن "دسته بندی ها" و فلش کنار آن (
fa fa-angle-left
) نمایش داده می‌شود. 3. زیرمنوها (
nav nav-treeview
): - شامل دو گزینه است: - مشاهده دسته‌بندی‌ها: لینک به
~/admin/categories/
برای نمایش دسته‌بندی‌ها. - افزودن دسته‌بندی جدید: لینک به
~/admin/categories/addnewcategory
برای ایجاد دسته‌بندی جدید. --- ۳. نقاط قوت کد 1. کنترل دسترسی: - استفاده از نقش‌های کاربری برای کنترل نمایش منو باعث افزایش امنیت و بهبود تجربه کاربری شده است. 2. طراحی خوانا و ساده: - ساختار HTML منو به خوبی طراحی شده و از کلاس‌های Bootstrap برای استایل‌دهی استفاده شده است. 3. انعطاف‌پذیری: - به راحتی می‌توان گزینه‌های بیشتری به زیرمنو اضافه کرد یا نقش‌های کاربری دیگری را به شرط دسترسی افزود. --- ۴. پیشنهادات بهبود 1. استفاده از
Any
به جای
Where
و
Count
: - شرط می‌تواند به این شکل ساده‌تر شود: csharp @if (ClaimUtility.GetRolse(User).Any(p => p == "Admin" || p == "Operator")) 2. نمایش منوی غیرفعال برای کاربران غیرمجاز: - به جای حذف منو برای کاربران غیرمجاز، می‌توان منوی غیرفعال نمایش داد: html <li class="nav-item has-treeview disabled"> <a href="#" class="nav-link"> <i class="fa fa-tag"></i> <p>دسته بندی ها</p> </a> </li> 3. پیاده‌سازی سیاست‌های دسترسی پیشرفته: - می‌توانید از سیستم
Policy-Based Authorization
در ASP.NET Core برای مدیریت دقیق‌تر دسترسی‌ها استفاده کنید. --- جمع‌بندی این کد به خوبی نمایش منوی "دسته‌بندی‌ها" را بر اساس نقش‌های کاربری مدیریت می‌کند. طراحی ساده و استفاده از کلاس‌های CSS و Bootstrap باعث بهبود خوانایی و کارایی شده است. با بهبودهای پیشنهادی، می‌توانید این کد را مؤثرتر و منعطف‌تر کنید.
پروژه ASP.Net Core MVC (وب و سی شارپ)
درس آخر فروشگاه مدیریت سفارش فروشگاه و مدیریت پرداخت ها و Authorization و Authentication در ادمین
این کد مربوط به پیکربندی احراز هویت (Authentication) و مجوزها (Authorization) در پروژه ASP.NET Core است. این تنظیمات در فایل `Program.cs`استفاده می‌شوند تا مکانیزم امنیتی برای مدیریت کاربران و دسترسی‌ها فعال شود. بیایید هر بخش از کد را بررسی کنیم: --- ### ۱. تنظیم مجوزها (Authorization) #### بخش `AddAuthorization`: csharp builder.Services.AddAuthorization(options => { options.AddPolicy(UserRoles.Admin, policy => policy.RequireRole(UserRoles.Admin)); options.AddPolicy(UserRoles.Customer, policy => policy.RequireRole(UserRoles.Customer)); options.AddPolicy(UserRoles.Operator, policy => policy.RequireRole(UserRoles.Operator)); }); #### عملکرد: - افزودن سیاست‌های دسترسی: - در این بخش، سه سیاست دسترسی بر اساس نقش‌های
Admin`، `Customer
و
Operator
تعریف شده‌اند. - `AddPolicy`: برای تعریف سیاست‌های دسترسی استفاده می‌شود. - `RequireRole`: مشخص می‌کند که کاربر باید دارای نقش خاصی باشد تا بتواند از این سیاست استفاده کند. #### مثال: - اگر بخواهید دسترسی به یک اکشن را محدود به کاربران با نقش
Admin
کنید، از سیاست تعریف‌شده استفاده می‌کنید: csharp [Authorize(Policy = UserRoles.Admin)] public IActionResult AdminOnly() { return View(); } #### کاربرد سیاست‌ها: - سیاست‌ها به صورت انعطاف‌پذیر به اکشن‌ها یا کنترلرها اعمال می‌شوند. - می‌توانید سیاست‌های پیچیده‌تر تعریف کنید (مثلاً بررسی شرایط مختلف). --- ### ۲. تنظیم احراز هویت (Authentication) #### بخش `AddAuthentication`: csharp builder.Services.AddAuthentication(options => { options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; }); #### عملکرد: - افزودن سیستم احراز هویت: - این بخش مکانیزم احراز هویت را فعال می‌کند. - `DefaultSignInScheme`: مشخص می‌کند که از کوکی‌ها برای ورود کاربر استفاده شود. - `DefaultAuthenticateScheme`: تنظیمات مربوط به احراز هویت را مشخص می‌کند. - `DefaultChallengeScheme`: مشخص می‌کند که هنگام درخواست ورود، از کدام سیستم استفاده شود. --- ### ۳. تنظیمات کوکی‌ها #### بخش `AddCookie`: csharp .AddCookie(options => { options.LoginPath = new PathString("/Authentication/Signin"); options.ExpireTimeSpan = TimeSpan.FromMinutes(5.0); options.AccessDeniedPath = new PathString("/Authentication/Signin"); }); #### عملکرد: - پیکربندی سیستم کوکی‌ها: - `LoginPath`: مسیر نمایش صفحه ورود کاربر. اگر کاربر احراز هویت نشده باشد و به مسیری که نیاز به ورود دارد دسترسی پیدا کند، به این مسیر هدایت می‌شود. - مثال:
/Authentication/Signin
. - `ExpireTimeSpan`: مدت زمان انقضای کوکی‌ها. در اینجا کوکی پس از 5 دقیقه منقضی می‌شود. - `AccessDeniedPath`: مسیر نمایش صفحه دسترسی غیرمجاز. اگر کاربر احراز هویت شده اما دسترسی به مسیر خاصی ندارد، به این مسیر هدایت می‌شود. --- ### ۴. فرآیند کلی کار 1. تعریف نقش‌ها و سیاست‌ها: - در بخش `AddAuthorization`، سیاست‌های مبتنی بر نقش‌ها تعریف می‌شوند. - این سیاست‌ها در کنترلرها و اکشن‌ها برای محدود کردن دسترسی استفاده می‌شوند. 2. احراز هویت و کوکی‌ها: - سیستم احراز هویت بر اساس کوکی‌ها پیکربندی شده است. - مسیر ورود و دسترسی غیرمجاز مشخص شده‌اند. --- ### ۵. نکات بهبود و بهترین روش‌ها 1. مدت زمان انقضای کوکی: - اگر سیستم برای استفاده طولانی‌مدت طراحی شده است، مدت زمان انقضای کوکی‌ها را افزایش دهید. - یا قابلیت
Remember Me
اضافه کنید. 2. اضافه کردن صفحه دسترسی غیرمجاز: - صفحه‌ای مخصوص برای نمایش پیام "دسترسی غیرمجاز" ایجاد کنید و در
AccessDeniedPath
استفاده کنید: csharp options.AccessDeniedPath = new PathString("/Authentication/AccessDenied"); 3. مدیریت نقش‌ها در دیتابیس: - تعریف نقش‌ها در کد (Hardcoded) ممکن است محدود باشد. به جای آن، نقش‌ها را در پایگاه داده مدیریت کنید و از سیستم
RoleManager
استفاده کنید. --- ### جمع‌بندی این کد تنظیمات اساسی برای مدیریت احراز هویت و دسترسی‌ها در یک پروژه ASP.NET Core فراهم می‌کند. از کوکی‌ها برای مدیریت وضعیت ورود کاربران استفاده می‌شود و سیاست‌های مبتنی بر نقش‌ها برای کنترل دسترسی تعریف شده‌اند. این رویکرد ساده و مؤثر است و می‌تواند به راحتی گسترش یابد.
سلام به همه دوستان من آموزش ها را در سایت باگتو دنبال کردم و پروژه من با دات نت 8 نوشتم و در کانالم به اشتراک گذاشتم شما برای یاد گیری اگر نیاز به آموزش ویدئو داشتید وارد سایت باگتو شوید و ویدئو های رایگان را دانلود کنید و آموزش ها را طبق پروژه من دنبال کند به خطا نخورید https://bugeto.net/courses/free-introductory-asp-dot-net-core-training-course
یک نکته مهم یادم رفت این هست که یک سوال از هوش مصنوعی پرسیدم که چگونه پروژه من را دیگران به درستی اجرا و تست کند برای اطمینان از اینکه فرد دیگری بتواند پروژه شما را به درستی اجرا و تست کند، باید چند مرحله را دنبال کند. در اینجا یک راهنمای کامل برای راه‌اندازی پروژه شما آورده شده است: ### ۱. بررسی نسخه ویژوال استودیو نصب ویژوال استودیو 2022 یا جدیدتر - مطمئن شوید که ویژوال استودیو 2022 یا جدیدتر نصب شده باشد. - در حین نصب، اطمینان حاصل کنید که بسته‌های مربوط به توسعه وب با ASP.NET و توسعه دات نت (با استفاده از دات نت 8) نصب شده باشند. ### ۲. نصب SQL Server نصب SQL Server - اگر SQL Server نصب نشده است، می‌تواند از [SQL Server Express] https://www.microsoft.com/en-us/sql-server/sql-server-downloads که نسخه رایگان SQL Server است، استفاده کند. - همچنین می‌تواند از [SQL Server Management Studio (SSMS)] https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms برای مدیریت پایگاه داده استفاده کند. ### ۳. تنظیمات Connection String ویرایش Connection String در فایل appsettings.json - فایل appsettings.json را در پروژه پیدا کنید و مطمئن شوید که Connection String به درستی تنظیم شده است. به عنوان مثال: json { "ConnectionStrings": { "DefaultConnection": "Server=.\\SQLEXPRESS;Database=ChartProjectDB;Trusted_Connection=True;Encrypt=False;" } } یا در program.cs string connectionString = @"Server=.\SQLEXPRESS; Database=Test_StoreDb; Integrated Security=True; TrustServerCertificate=True;"; builder.Services.AddDbContext<DataBaseContext>(options => options.UseSqlServer(connectionString)); در -
Server=.;
برای اتصال به یک SQL Server محلی استفاده می‌شود. اگر SQL Server در یک سرور دیگر نصب شده باشد، باید نام سرور جایگزین شود.
Server=.;
یا
Server=.\\SQLEXPRESS;
### ۴. اجرای Migrations اجرای Migrations برای ایجاد جداول در پایگاه داده 1. باز کردن Package Manager Console: - به ویژوال استودیو بروید و از منوی Tools، گزینه NuGet Package Manager و سپس Package Manager Console را انتخاب کنید. 2. اجرای دستور Update-Database: - در کنسول باز شده، دستور زیر را برای اعمال Migrations و ایجاد جداول در پایگاه داده اجرا کنید: powershell Update-Database ### ۵. اجرای پروژه اجرای پروژه در ویژوال استودیو - حالا می‌تواند پروژه را با کلیک بر روی دکمه
Run
یا فشار دادن کلید
F5
اجرا کند. ### نکات اضافی - نصب بسته‌های مورد نیاز: قبل از اجرای پروژه، اطمینان حاصل کند که همه بسته‌های مورد نیاز با اجرای دستور
dotnet restore
در کنسول مدیریت بسته‌ها نصب شده باشند. - بررسی فایل‌های لاگ: اگر باز هم خطاها ادامه داشت، فایل‌های لاگ را بررسی کند تا جزئیات خطاها را مشاهده کند و بتواند مشکلات را بهتر شناسایی کند.