خواندن اطلاعات حساب کاربری و نمایش در سایت
سلام دوستان
فرض کنید به جدول AspnetUser توی Identity یه سری فیلد اضافه کردیم مثل آدرس و نام
حالا میخوام وقتی کاربر لاگین شد اطلاعاتش رو نمایش بده مثلا بنویسه کاربر فلان خوش آمدید آدرس شما فلان است
حالا یه راهش اینه بیام هر سری کوئری بزنم از دیتابیس بر اساس userId اطلاعاتش رو بکشم بیرون
اما جون این اطلاعات توی layout داره نمایش داده میشه واسه هر صفحه یه سر بار اضافی میاره
اگر هم بخوام توی سشن ذخیره کنم ممکنه سشن از بین بره ولی کاربر لاگین بمونه همچنان و اینجوری مقدار Null نمایش داده میشه
بهترین راه چیه به نظرتون واسه همچین موردی؟
نقل قول: خواندن اطلاعات حساب کاربری و نمایش در سایت
فایل app.config یا web.config برای موارد استاتیک کاربرد دارد و جای مناسبی برای موارد داینامیک نیست
در ضمن شما میخواهید اطلاعات چند صد یا چند هزار کاربر در فایل app.config ذخیره کنید؟
User Claims برای این گونه موارد کاربرد دارد و از کوکی بهرره میبرد
نقل قول: خواندن اطلاعات حساب کاربری و نمایش در سایت
نقل قول:
نوشته شده توسط
ali_md110
فایل app.config یا web.config برای موارد استاتیک کاربرد دارد و جای مناسبی برای موارد داینامیک نیست
در ضمن شما میخواهید اطلاعات چند صد یا چند هزار کاربر در فایل app.config ذخیره کنید؟
User Claims برای این گونه موارد کاربرد دارد و از کوکی بهرره میبرد
اقا من معذرت میخوام سوتی دادم اساسی
من یه مشکل دیگه هم داشتم که یه لحظه فکر کردم واسه اون تاپیک رو زدم
واسه همین اون مشکلم حل شد اومدم اینو نوشتم اینجا
داستان از این قرار بود میخاستم یه سری تنظیمات رو توی دیتابیس ذخیره کنم بعدش دیدم ارزش نداره باید توی فایل app.config باشه
حالا واسه مورد بالا چجوری میشه حلش کرد؟
نقل قول: خواندن اطلاعات حساب کاربری و نمایش در سایت
جدول Claims یک سری اطلاعات اضافی بصورت key value در خودش میتونه ذخیره میکنه
شما ابتدای لایگن کاربر اطلاعاتی مثل آدرس یا موارد دیگر را در جدول Claims اضافه میکنید و هنگام استفاده این اطلاعات ذخیره شده را بازیابی میکنید
برای اولین بار اطلاعات از دیتابیس خوانده میشود ولی برای مراجعات بعدی از کوکی موجود در سیستم کاربر استفاده میشود
یک مثال ساده:
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "Ali"));
claims.Add(new Claim(ClaimTypes.Email, "ali@gmail.com"));
var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
درج claims ها در جدول user claims