منقضی شدن سشن (Session) کاربر زودتر از زمان تعیین شده


۲ سال پیش چهارشنبه ۳۰ تیر ۱۳۹۵ ساعت ۱۹:۱۱

اگر از مکانیزم Forms Authentication برای اعتبار سنجی کاربران  در یک وب اپلیکیشن دات نتی استفاده کنید ممکن هست با مشکل منقضی شدن سشن کاربر زودتر از زمان تعیین شده به عنوان timeout در فایل وب کانفیگ (web.config) برخورد کرده‌باشید.

اخیرا وقتی برای میزبانی وب از یک هاست اشتراکی استفاده‌کردم این مشکل بصورت مکرر برای من رخ داد و متوجه شدم علت recycling و ری‌استارت شدن اپلیکیشن هست که می‌تواند علت‌های مختلفی داشته باشد مثل تنظیمات وب سرور iis ویا تغییر در برخی از فایل‌ها و پوشه‌ها و ...
مکانیزم Forms Authentication برای رمزنگاری اطلاعات از machineKey استفاده می‌کند، که می‌شود مقدار آن را در فایل وب کانفیگ تایین کرد و اگر این کلید در وب کانفیگ مقدار دهی نشود، مقدار آن برابر با متغیر عمومی machine.config قرار می‌گیرد که با هر بار ری‌استارت شدن اپلیکیشن مقدار آن بصورت خودکار می‌شود.
در نتیجه اگر صریحا مقدار machineKey را در وب کانفیگ تعریف نکنید با هر بار ری‌استارت شدن اپلیکیشن سشن کاربرهای معتبر سایت منقضی شود و برای جلوگیری از این اتفاق کافیست ابتدا یک machineKey مرتبط با نسخه دات نتی که در برنامه‌تان استفاده کردید از سایت‌های تولید آنلاین machineKey مثل: ASP.Net MachineKey Generator  دریافت کرده و درون تگ <system.web> در فایل وب کانفیگ به شیوه‌ی زیر قرار دهید.

<system.web>
  ...
  <machineKey 
  validationKey="..."
  decryptionKey="..."
  validation="SHA1"
  decryption="AES"/>
  ...
</system.web>

نوشتن نظر
میثم - ۳۳ ماه و ۱۷ روز قبل
تشکر میکنم از مطلب خوبتون که واقع درد من در خیلی از پروژه ها بود راستی املای تعیین صحیح است. ممنونم از به اشتراک گذاری این نکات خوب
سید محمدرضا برنتی - ۳۳ ماه و ۱۷ روز قبل
مچکرم، اصلاح شد.
علی یگانه مقدم - ۳۱ ماه و ۴ روز قبل
خیلی عالی
سید محمدرضا برنتی - ۳۱ ماه و ۴ روز قبل
ممنونم آقای مقدم
پریا - ۹ ماه و ۸ روز قبل
خیلی خیلی خیلی ممنون و عالی
منصور - ۷ ماه و ۹ روز قبل
بسیار عالی و دقیق مشکل رو حل کرد.
* من از ایمیل شما برای نمایش تصویر شما توسط سرویس gravatar استفاده خواهم کرد. من هم مثل شما از اسپم متنفرم.