پروژه 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 فراهم میکند. از کوکیها برای مدیریت وضعیت ورود کاربران استفاده میشود و سیاستهای مبتنی بر نقشها برای کنترل دسترسی تعریف شدهاند. این رویکرد ساده و مؤثر است و میتواند به راحتی گسترش یابد.
فهرست ASP,NET Core MVC
فصل اول آشنایی و تنظیمات ASP,NET Core
01- آشنایی با ASP,NET Core
02- نصب ASP,NET در ویژوال استودیو
03- تکنولوژیها و الگوهای پروژه در ASP,NET Core
04- ایجاد یک پروژه ASP,NET Core Web App (Model-View-Controller)
05- توضیح مختصری از پروژه
06- چرخه حیات درخواست در ASP,NET Core MVC
07- Middleware ها
08- Environment
09- لاگینگ (Logging)
فهرست ASP,NET Core MVC
فصل دوم معماری MVC
01-- معماری MVC
02- دیزاین پترنها (Design Patterns)
03- مدل (Model)
04- نما (View)
05- کنترلگر (Controller)
06- کنترل ها
07- مثال: Action
08- اکشن Attribute [NonAction]
09- اکشن Attribute [ActionName]
10- مدلها (Models)
11- ویو view
12- Razor
13- HTML Helpers
14- Tag Helpers
15- فایل Layout
16- رندربادی RenderBody()
17- RenderSection()
18- Error Handling و ViewImports
19- ValidationScriptsPartial
20- Error,cshtml
21- Program,cs یا Startup,cs
22- Routing
23- صفحه تماس
24- ترتیب قرارگیری مسیرها (Routes)
25- علامت سوال ? پارامتر id
26- اعتبارسنجی (Validation)
27- asp-validation-for
28- پارشیال (Partial View)
29- Attributeها
30- attribute phone
31- یک نمونه خروجی برای مدل User که شامل اعتبارسنجی
32- اگر کاربر فایل JavaScript را حذف کند
33- Fluent Validation
34- Scaffolding چیست
35- سه حالت ایجاد کنترلر
36- پروژه Scaffolding
37- Model Binding
38- قوانین کد نویسی تمیز
39- ViewData
40- ViewBag
41- ViewData
42- TempData
43- پارشیال ویو (Partial View)
44- ViewComponent
45- Area
فهرست ASP,NET Core MVC
فصل سوم آشنایی با Database و SQL Server
01- بانک اطلاعاتی یا دیتابیس (Database)
02- طراحی بانک اطلاعاتی
03- طراحی بانک اطلاعاتی SQL Server
04- Primary Keys
05- نمودارهای بانک اطلاعاتی یا Database diagrams
06- Foreign Keys
07- عملیات حذف، بهروزرسانی و اضافه کردن
08- Generate Script
09- Backup
فهرست ASP,NET Core MVC
فصل چهارم آموزش مقدماتی Ef Core
01- آشنایی ORM و EF و EF Core و ADO,NET و Dapper
02- ایجاد پروژه و نصب پکیج
03- نحوه اتصال به سرور SQL Server
04- Migration
05- ایجاد دیتابیس با asp,net core mvc
06- پروژه asp,net core mvc اتصال به دیتابیس و ایجاد جدول ها
07- DbContext و الگوهای Repository و Unit of Work
08- پروژه
09- متدها را که در هنگام کار با DbContext در Entity Framework Core
فهرست ASP,NET Core MVC
فصل پنجم توضیح در مورد پروژه
01- SQL Server Profiler
02- بررسی معماری سه لایه سنتی (Three-Tier Architecture)
03- معماری کلین (Clean Architecture)
04- پنج لایه معماری کلین (Clean Architecture)
05- چهار لایه اولیه در معماری کلین
06- لایه Domain
07- لایه Application
08- لایه Persistence
09- لایه Infrastructure
10- لایه Presentation
11- اسکرام (Scrum)
12- الگوی CQRS (Command Query Responsibility Segregation)
13- دیزاین پترن (الگوی طراحی) Facade
14- SweetAlert2
15- حریم خصوصی کاربران
16- ساختار درختی کتگوری (Category Tree Structure)
17- استفاده از بلوکهای Try-Catch
18- کوکیها (Cookies)
19- رمزگذاری پسوردها
20- ذخیره اطلاعات لاگین در کوکی
فهرست ASP,NET Core MVC
فصل ششم انجام پروژه : سایت فروشگاه
01- قالب های رایگان
02- پیاده سازی معماری
03- پیاده سازی قالب ادمین به پروژه
04- پیاده سازی قالب فروشگاه
05- Find and Replace
06- Areas
07- تایپ کاراکترهای خاص
08- فهرست کاراکترهای خاص
09- قسمت اول Users در پروژه
10- پروژه قسمت دوم Users
11- قسمت آخر user ثبت نام و ورود
12- مدیریت دسته بندی ها
13- افزودن محصولات جدید و لیست محصولات با جزئیات
14- پروژه ثبت فروشگاه
15- متصل کردن منو به دیتابیس و مدیریت منو فروشگاه در ادمین و پیاده سازی جستجو
16- تولید عدد تصادفی
17- صفحه بتدی و مرتب سازی
18- در این بخش صفحه اصلی پویا
19- ادامه درس بخش صفحه اصلی پویا
20- افزودن به سبد خرید قسمت اول
21- پروژه کوچک مدیریت کوکی
22- پروژه زرین پال
23- پروژه تست بانک زرین پال دات نت 8
24- پروژه فروشگاه این قسمت زرین پال
25- پروژه نمودار
26- پروژه فروشگاه این قسمت ثبت سفارش
27- درس آخر فروشگاه مدیریت سفارش فروشگاه و مدیریت پرداخت ها و Authorization و Authentication در ادمین
سلام به همه دوستان من آموزش ها را در سایت باگتو دنبال کردم و پروژه من با دات نت 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در کنسول مدیریت بستهها نصب شده باشند. - بررسی فایلهای لاگ: اگر باز هم خطاها ادامه داشت، فایلهای لاگ را بررسی کند تا جزئیات خطاها را مشاهده کند و بتواند مشکلات را بهتر شناسایی کند.