للحصول على ClaimsPrincipal
في طبقة الأعمال (BL) في تطبيق ASP.NET Core 1 مع مصادقة الرمز المحمل (Bearer token)، يمكنك استخدام خدمات الاعتماد (Authentication services) المتوفرة في إطار العمل.
أولاً، تأكد من تمكين خدمة المصادقة في ConfigureServices في Startup.cs:
csharpservices.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
في خدمات الاعتماد:
csharpservices.AddSingleton
();
بعد ذلك، يمكنك حقن IHttpContextAccessor
في طبقة الأعمال واستخدامه للوصول إلى ClaimsPrincipal
الحالي كما يلي:
csharppublic 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 مع مصادقة الرمز المحمل، يمكنك متابعة الخطوات التالية:
-
تكوين خدمات المصادقة في ConfigureServices: تأكد من تكوين خدمات المصادقة في طريقة ConfigureServices في ملف Startup.cs. يمكنك استخدام
services.AddAuthentication()
لتكوين خيارات المصادقة وإعدادات JWT Bearer:csharpservices.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
: يجب تسجيلIHttpContextAccessor
في خدمات ASP.NET Core لتمكين الوصول إلى السياق الحالي للطلبات HTTP، وبالتالي الحصول علىClaimsPrincipal
:csharpservices.AddSingleton
(); -
حقن
IHttpContextAccessor
في طبقة الأعمال: بعد تسجيلIHttpContextAccessor
، يمكنك حقنه في طبقة الأعمال (BL) لاستخدامه للوصول إلىClaimsPrincipal
الحالي:csharppublic class YourBLClass { private readonly IHttpContextAccessor _httpContextAccessor; public YourBLClass(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor = httpContextAccessor; } public void YourMethod() { var claimsPrincipal = _httpContextAccessor.HttpContext.User as ClaimsPrincipal; // الآن يمكنك استخدام claimsPrincipal للوصول إلى المطالب (claims) } }
-
استخدام
ClaimsPrincipal
في طبقة الأعمال: بعد الحصول علىClaimsPrincipal
، يمكنك استخدامه للتحقق من المطالب (claims) أو الهوية الحالية للمستخدم وفقًا لاحتياجات تطبيقك.مثال:
csharpvar userIdClaim = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier)?.Value;
هذه الخطوات توضح كيف يمكنك الوصول إلى ClaimsPrincipal
في طبقة الأعمال في تطبيق ASP.NET Core 1 مع مصادقة الرمز المحمل بدون الحاجة إلى تمرير ClaimsPrincipal
مباشرة إلى طبقة الأعمال.