PDA

View Full Version : محتوای سشن و کلاس هر یوزر در سرور



IR-Developer
پنج شنبه 07 بهمن 1395, 14:31 عصر
سلام من یک وب اپلیکیشن نوشتم و یک مشکل داره وقتی یک یوزری به پنلش لاگین میکنه یک کلاس استاتیک و سشن براش پر میشه و شامل اطلاعات شخصی از اون یوزر هست .

حالا وقتی یوزر دوم لاگین میکنه و سشن و کلاس استاتیک برای یوزر دوم هم پر میشه یه مشکل عجیب پیش میاد که سشن و کلاس استاتیک یوزر اول هم با اطلاعات یوزر دوم عوض میشه و یوزر اول توی پنل خودش محتوای یوزر دوم را میبینه .

یعنی جلسات کاری یوزرها با هم قاطی میشه و اخرین یوزری که لاگین کرده اطلاعات سشن و کلاس استاتیکش روی بقیه ی یوزرها اثر میزاره و دیگه بقیه اطلاعات اخرین یوزر لاگین شده را میبینن .

من تا حالا همچین چیزی ندیده بودم خیلی عجیبه .

فکر میکردم وب سرورم مشکل پیدا کرده که روی یک سرور دیگه هم تست کردم همینطور بود . مشکل از پروژه هست و نمیفهمم دلیلش چیه !

nunegandom
جمعه 08 بهمن 1395, 03:10 صبح
سلام
دلیلش اینه که static هست!
این استاتیک چند تا حافظه نمیگیره، و آبجکت هم ازش نمیتونید بسازید
بگذارید یک مثال ساده بزنم
دو کلاس دارم، یکی استاتیک و یکی غیر استاتیک
هر دو دارای خصوصیات اطلاعات کاربری هستند.

توی وب میام هر کس لاگین کرد اطلاعاتشو میریزم توی این کلاس استاتیک
۵ نفر لاگین میکنن => یک کلاس دارم که ۵ نفر دارن روی همون کلاس کار میکنن! نفر آخر اطلاعاتش بر بقیه اولویت داره و هر ۵ نفر همون اطلاعات نفر آخر رو میبینن

این سمت من یه کلاس معمولی غیر استاتیک دارم ازش یک نمونه جدید درست میکنم
۵ نفر لاگین میکنن => ۵ تا آبجکت درس شده که هر کدوم اطلاعات خودشون رو دارن!

IR-Developer
شنبه 09 بهمن 1395, 10:34 صبح
سلام
دلیلش اینه که static هست!
این استاتیک چند تا حافظه نمیگیره، و آبجکت هم ازش نمیتونید بسازید
بگذارید یک مثال ساده بزنم
دو کلاس دارم، یکی استاتیک و یکی غیر استاتیک
هر دو دارای خصوصیات اطلاعات کاربری هستند.

توی وب میام هر کس لاگین کرد اطلاعاتشو میریزم توی این کلاس استاتیک
۵ نفر لاگین میکنن => یک کلاس دارم که ۵ نفر دارن روی همون کلاس کار میکنن! نفر آخر اطلاعاتش بر بقیه اولویت داره و هر ۵ نفر همون اطلاعات نفر آخر رو میبینن

این سمت من یه کلاس معمولی غیر استاتیک دارم ازش یک نمونه جدید درست میکنم
۵ نفر لاگین میکنن => ۵ تا آبجکت درس شده که هر کدوم اطلاعات خودشون رو دارن!

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

حالا بجای سشن و کلاس اساتیک از چی میشه استفاده کرد ؟

Cybersilent
پنج شنبه 19 اسفند 1395, 19:54 عصر
شما برای ذخیره اطلاعات افرادی که لاگین کرده اند اصلا نباید از سشن استفاده کنید، باید از کوکی های خود Identity استفاده کنید و مقادیر مورد نظر خودتون رو در قالب Claim ها در اون قرار بدید، و کوکی ها با هر بار ارسال درخواست توسط مرورگر به سرور ارسال می شن و می تونید به اطلاعات کاربر لاگین کرده دسترسی داشته باشید.