البرمجة

كيفية الوصول إلى ClaimsPrincipal في طبقة الأعمال في ASP.NET Core 1

للحصول على ClaimsPrincipal في طبقة الأعمال (BL) في تطبيق ASP.NET Core 1 مع مصادقة الرمز المحمل (Bearer token)، يمكنك استخدام خدمات الاعتماد (Authentication services) المتوفرة في إطار العمل.

أولاً، تأكد من تمكين خدمة المصادقة في ConfigureServices في Startup.cs:

csharp
services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "your_issuer", ValidAudience = "your_audience", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")) }; });

ثم، في طبقة الأعمال، يمكنك استخدام IHttpContextAccessor للوصول إلى ClaimsPrincipal الحالي. يجب عليك تسجيل IHttpContextAccessor في خدمات الاعتماد:

csharp
services.AddSingleton();

بعد ذلك، يمكنك حقن IHttpContextAccessor في طبقة الأعمال واستخدامه للوصول إلى ClaimsPrincipal الحالي كما يلي:

csharp
public class YourBLClass { private readonly IHttpContextAccessor _httpContextAccessor; public YourBLClass(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void YourMethod() { var claimsPrincipal = _httpContextAccessor.HttpContext.User as ClaimsPrincipal; // الآن يمكنك استخدام claimsPrincipal للوصول إلى المطالب (claims) } }

ملاحظة: يجب أن يتم تضمين مسح الاستثناءات للتأكد من عدم وجود استثناءات مرتبطة بـ IHttpContextAccessor في طبقة الأعمال.

المزيد من المعلومات

للحصول على المزيد من المعلومات حول كيفية الوصول إلى ClaimsPrincipal في طبقة الأعمال في تطبيق ASP.NET Core 1 مع مصادقة الرمز المحمل، يمكنك متابعة الخطوات التالية:

  1. تكوين خدمات المصادقة في ConfigureServices: تأكد من تكوين خدمات المصادقة في طريقة ConfigureServices في ملف Startup.cs. يمكنك استخدام services.AddAuthentication() لتكوين خيارات المصادقة وإعدادات JWT Bearer:

    csharp
    services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "your_issuer", ValidAudience = "your_audience", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")) }; });
  2. تسجيل IHttpContextAccessor: يجب تسجيل IHttpContextAccessor في خدمات ASP.NET Core لتمكين الوصول إلى السياق الحالي للطلبات HTTP، وبالتالي الحصول على ClaimsPrincipal:

    csharp
    services.AddSingleton();
  3. حقن IHttpContextAccessor في طبقة الأعمال: بعد تسجيل IHttpContextAccessor، يمكنك حقنه في طبقة الأعمال (BL) لاستخدامه للوصول إلى ClaimsPrincipal الحالي:

    csharp
    public class YourBLClass { private readonly IHttpContextAccessor _httpContextAccessor; public YourBLClass(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void YourMethod() { var claimsPrincipal = _httpContextAccessor.HttpContext.User as ClaimsPrincipal; // الآن يمكنك استخدام claimsPrincipal للوصول إلى المطالب (claims) } }
  4. استخدام ClaimsPrincipal في طبقة الأعمال: بعد الحصول على ClaimsPrincipal، يمكنك استخدامه للتحقق من المطالب (claims) أو الهوية الحالية للمستخدم وفقًا لاحتياجات تطبيقك.

    مثال:

    csharp
    var userIdClaim = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier)?.Value;

هذه الخطوات توضح كيف يمكنك الوصول إلى ClaimsPrincipal في طبقة الأعمال في تطبيق ASP.NET Core 1 مع مصادقة الرمز المحمل بدون الحاجة إلى تمرير ClaimsPrincipal مباشرة إلى طبقة الأعمال.

زر الذهاب إلى الأعلى