یک نکتهی تکمیلی: روشی برای عدم استفاده از Razor Pages جهت لاگین کاربران در برنامههای Blazor Server
در این سری، از razor pages به همراه قالب پیشفرض ASP.NET Core Identity، جهت پیاده سازی ورود کاربران به سیستم، استفاده شدهاست. یعنی کاربر یکبار از فضای Blazor Server خارج شده و وارد یک برنامهی ASP.NET Core Razor Pages معمولی میشود؛ لاگین میکند (در یک ناحیهی مخصوص razor pages) و سپس مجددا وارد قسمت Blazor Server میشود که ... تجربهی کاربری مطلوبی را به همراه ندارد. علت این خروج و ورود را هم در این مطلب میتوانید مطالعه کنید: «دستیابی به HttpContext در Blazor Server». هدف این بوده که بتوان با استفاده از HttpContext مهیای در razor pages (و نه توسط اتصال web socket یک برنامهی blazor server)، کوکیهای پس از لاگین موفق را به سمت مرورگر ارسال و ثبت کرد و درگیر مشکلات به همراه دسترسی به HttpContext در برنامههای Blazor server نشد.
راه دیگری هم برای مواجه شدن با این مشکل وجود دارد: حذف قسمت razor pages؛ حذف نیاز به خروج و ورود از برنامهی blazor server و ... استفاده از ProtectedBrowserStorage که اکنون جزئی از blazor server استاندارد است؛ جهت ثبت اطلاعات user claims و عدم استفاده از کوکیها که نیاز به دسترسی به HttpContext را دارند. اگر علاقمند به مشاهدهی یک مثال کامل در این زمینه هستید، میتوانید به پروژهی « BlazorServerAuthenticationAndAuthorization » مراجعه کنید. در اینجا یک CustomAuthenticationStateProvider را به کمک ProtectedSessionStorage طراحی و استفاده کرده تا نیاز به کار با کوکیها برطرف شود و دیگر نیازی به استفاده از razor pages نباشد. البته باید دقت داشت که SessionStorage محدود به tab جاری است و اگر نیاز است اطلاعات آن در تمام برگههای باز شده در دسترس باشد، بهتر است از ProtectedLocalStorage استفاده کرد. همچنین باید دقت داشت که چون این protected storageها برای رمزنگاری خودکار اطلاعات از ASP.NET Core data protection API استفاده میکنند، نکات مطلب « غیرمعتبر شدن کوکیهای برنامههای ASP.NET Core هاست شدهی در IIS پس از ریاستارت آن » نیز در مورد آنها صادق است.
5 JavaScript Security Best Practices for 2024
Any JavaScript web application needs to have a Content Security Policy (CSP), a browser security standard that dictates what the browser is allowed to load — whether that be a domain, subdomain, or resource. Without a CSP, hackers can exploit cross-site scripting vulnerabilities, potentially resulting in a data breach.
اشتراکها
ارتباط بین دایرکتیوها در AngularJs
هستند یکسری پروژهی افزونه پذیر برای ASP.NET Core که این مفاهیم را پیاده سازی کردهاند (و وابستگی به StructureMap هم ندارند):
ExtCore - Free, open source and cross-platform framework for creating modular and extendable web applications based on ASP.NET Core
SimplCommerce - A super simple, cross platform, modularized ecommerce system built on .NET Core
Modular Web Application with ASP.NET Core
Orchard vNext - Orchard 2 is a re-implementation of Orchard CMS in ASP.NET Core
SimplCommerce - A super simple, cross platform, modularized ecommerce system built on .NET Core
Modular Web Application with ASP.NET Core
Orchard vNext - Orchard 2 is a re-implementation of Orchard CMS in ASP.NET Core
These are some key features of the framework itself:
Modular and NLayered architecture
Multi-tenancy
Dependency Injection
Domain Driven Design
Unit of work implementation
Flexible Localization system
Automatic data filters
Audit logging
Setting management
Menu management
Authorization
Exception handling
Validation
Logging
Event bus for domain events
Auto-creating Web API layer for Application Services
Auto-creating Javascript proxy layer to use Web API layer
Javascript helper methods for ajax, notifications, message boxes, making UI busy...
Easily working with embedded resources
Useful extension and helper methods
فقط موردی هست اینکه به چه روشی میشه Identity Core رو به Identity Server متصل کرد براساس مستندات ارائه شده در بخش