PDA

View Full Version : حرفه ای: خواندن اطلاعات حساب کاربری و نمایش در سایت



سعید کشاورز
پنج شنبه 25 مرداد 1397, 16:46 عصر
سلام دوستان
فرض کنید به جدول AspnetUser توی Identity یه سری فیلد اضافه کردیم مثل آدرس و نام
حالا میخوام وقتی کاربر لاگین شد اطلاعاتش رو نمایش بده مثلا بنویسه کاربر فلان خوش آمدید آدرس شما فلان است
حالا یه راهش اینه بیام هر سری کوئری بزنم از دیتابیس بر اساس userId اطلاعاتش رو بکشم بیرون
اما جون این اطلاعات توی layout داره نمایش داده میشه واسه هر صفحه یه سر بار اضافی میاره
اگر هم بخوام توی سشن ذخیره کنم ممکنه سشن از بین بره ولی کاربر لاگین بمونه همچنان و اینجوری مقدار Null نمایش داده میشه
بهترین راه چیه به نظرتون واسه همچین موردی؟

ali_md110
پنج شنبه 25 مرداد 1397, 19:10 عصر
فایل app.config یا web.config برای موارد استاتیک کاربرد دارد و جای مناسبی برای موارد داینامیک نیست
در ضمن شما میخواهید اطلاعات چند صد یا چند هزار کاربر در فایل app.config ذخیره کنید؟

User Claims برای این گونه موارد کاربرد دارد و از کوکی بهرره میبرد

سعید کشاورز
پنج شنبه 25 مرداد 1397, 19:21 عصر
فایل app.config یا web.config برای موارد استاتیک کاربرد دارد و جای مناسبی برای موارد داینامیک نیست
در ضمن شما میخواهید اطلاعات چند صد یا چند هزار کاربر در فایل app.config ذخیره کنید؟

User Claims برای این گونه موارد کاربرد دارد و از کوکی بهرره میبرد

اقا من معذرت میخوام سوتی دادم اساسی
من یه مشکل دیگه هم داشتم که یه لحظه فکر کردم واسه اون تاپیک رو زدم
واسه همین اون مشکلم حل شد اومدم اینو نوشتم اینجا
داستان از این قرار بود میخاستم یه سری تنظیمات رو توی دیتابیس ذخیره کنم بعدش دیدم ارزش نداره باید توی فایل app.config باشه
حالا واسه مورد بالا چجوری میشه حلش کرد؟

ali_md110
پنج شنبه 25 مرداد 1397, 21:15 عصر
جدول 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