اشتراکها
جهت اطلاع
این سری برای ASP.NET Core 2x تهیه شد و با آخرین نگارش Identity server و همچنین ASP.NET Core سازگار نیست. برای اعمال آخرین تغییرات مورد نیاز این دو، تمام قسمتهای این سری باید بازنویسی کلی شوند که ... خارج است از امکانات ما. به همین جهت مخزن کد آن در حالت آرشیو قرار گرفته تا این موضوع مشخص باشد.
ASP.NET Core Identity فقط برای مدیریت یک برنامهی وب طراحی شده. اگر بیشتر از یک برنامهی وب دارید، نیاز به راه حل مخصوص آنرا که «تامین کنندهی هویت مرکزی» یا «IDP» نام دارد، خواهید داشت: «امن سازی برنامههای ASP.NET Core توسط IdentityServer 4x»
اشتراکها
روش پیاده سازی DDD
- یک نمونه مثال کامل کنسول «ASPNETCore Jwt Authentication.ConsoleClient» که کوکیهای آنتیفورجری پس از لاگین را دریافت و پردازش میکند؛ مرتبط با پروژهی مطلب «اعتبارسنجی مبتنی بر JWT در ASP.NET Core 2.0 بدون استفاده از سیستم Identity» که در بحث جاری به آن پرداخته شد. مثال Ajax ای آن هم در همان پروژه موجود است.
- اگر «مستند سازی ASP.NET Core 2x API توسط OpenAPI Swagger» را پیاده سازی کنید و مباحث «تکمیل مستندات محافظت از API» را لحاظ کنید، با استفاده از ابزارهایی میتوانید « تولید خودکار کدهای سمت کلاینت» را هم انجام دهید.
یک نکتهی تکمیلی
پیاده سازی مطلب جاری برای ASP.NET Identity 2.x یک چنین تغییراتی را پیدا میکند:
با این متد بررسی درخواستها:
پیاده سازی مطلب جاری برای ASP.NET Identity 2.x یک چنین تغییراتی را پیدا میکند:
app.UseCookieAuthentication(new CookieAuthenticationOptions { // ... Provider = new CookieAuthenticationProvider { OnValidateIdentity = context => { if(shouldIgnoreRequest(context)) // How to ignore Authentication Validations for static files in ASP.NET Identity { return Task.FromResult(0); } return container.GetInstance<IApplicationUserManager>().OnValidateIdentity().Invoke(context); } }, // ... });
private static bool shouldIgnoreRequest(CookieValidateIdentityContext context) { string[] reservedPath = { "/__browserLink", "/img", "/fonts", "/Scripts", "/Content", "/Uploads", "/Images" }; return reservedPath.Any(path => context.OwinContext.Request.Path.Value.StartsWith(path, StringComparison.OrdinalIgnoreCase)) || BundleTable.Bundles.Select(bundle => bundle.Path.TrimStart('~')).Any(bundlePath => context.OwinContext.Request.Path.Value.StartsWith(bundlePath,StringComparison.OrdinalIgnoreCase)); }
اشتراکها