• 1398/04/30

سوال درباره Identity :

سلام  

شما یک  لیست  از  claim   درست  کردید  و  اطلاعات  یوزر  را دادید  بهش 

حالا   من هم  یدونه  دیگه  اضافه  کردم (new Claim(ClaimTypes.MobilePhone,"2222222222")  ب طور مثال  

اما   وقتی  گرفتیم   چجوری  هرجا  خواستیم  ب  اون  اطلاعات   دسترسی  داشته باشیم  ؟

 

اگر  من اشتباه   متوجه  شدم   لطفا   راه  درست   گرفتن   اطلاعات  کاربر  هنگام  لاگین   و   استفاده از  اون اطلاعات   در  ایدنتیتی  ب  چ  صورت  است 

 

با   تشکر

 

  • 1398/04/30
  • ساعت 09:04

سلام به وسیله تابع زیر شما میتونید کلایم موبایل رو استخراج کنید به همین صورت هر نوع کلایم دیگه ای که خواستید میتونید استخراج کنید حتی کلایم های کاستوم خودتون اما پیشنهاد میشه از کلایم های خود سیستم  asp استفاده کنید و اگر از احرازهویت توکن بیس استفاده میکنید از کلایم های jwt استفاده کنید که در همه سیستم ها نام کلایمتون یکسان باشه

public static string GetPhoneNumber(this IIdentity identity)
{
    return ((ClaimsIdentity)identity).FindFirstValue("PhoneNumber");
}

  • 1398/04/30
  • ساعت 11:05

ممنون  دوست  عزیز  از پاسخگویی  

پس باید  یک اکستنش متد  بسازیم   برای هر آیتم  ک میخواهیم  از  claim  بگیریم  و ازش استفاده کنیم 

 

یک سوال  دیگه  این مورد   توی   نسخه  identity 2  در mvc5  هم   این چنین  است  یا  متفاوته؟


  • 1398/04/31
  • ساعت 11:36

بله همینطور هست منتهی سعی کنید توابع جنریک بسازید بدین صورت از کد نویسی زیاد پرهیز میکنید و کدتون هم خوانا تر میشه

به عنوان مثال برای آیدی ممکنه هم نوع guide هم نوع int باشه اما در کلایم استرینگ ذخیره میشه برای حل این موضوع مثلا یک تابع جنریک تبدیل مقادیر به هم بنویسید و درون اون کلایم رو دریافت کنید

User.GetId<int>();

مثلا اینطوری

من mvc  رو خیلی کار نکردم اما تاجایی میدونم identity کور با mvc کاملا متفاوت هست اما بحث کلایم ها در تمام سیستم ها حتی زبان های دیگه یکسان هست

 

بابت پاسخ دیر هم عذر خواهم متوجه نشده بودم


  • 1398/04/31
  • ساعت 14:00

ممنون دوست من