دسته بندی ها
07:02 1400/06/09

پایان نشست (Session) در صورت عدم استفاده از سیستم در Asp

مشخصات سوال کننده :
کاربر : hossein1244     امتیاز کاربر : 9     رتبه کاربر : 72
دسته بندی : Asp.net Mvc Asp.net Core جاوا اسکریپت

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3198
1 نظر
fateme : لطفا بیشتر توضیح بدید و مثالی، کدی چیزی قرار بدید. سوالتون خیلی کلی هست.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 11:35 1400/06/09
هوش مصنوعی

پاسخ هوش مصنوعی

برای پیاده سازی قابلیت پایان نشست (Session) در ASP.NET، می توانید از مکانیزم هایی مانند کوکی ها و JavaScript برای شناسایی عدم فعالیت کاربر استفاده کنید. به این صورت که پس از مدت زمان مشخصی عدم فعالیت، یک View خاص نمایش داده شود. در زیر یک نمونه کد برای انجام این کار آورده شده است:

var inactivityTime = function () {
    var timeout;
    window.onload = resetTimer; // Reset timer on page load
    window.onmousemove = resetTimer; // Reset timer on mouse movement
    window.onkeypress = resetTimer; // Reset timer on key press

    function logout() {
        // فراخوانی View مربوط به پایان نشست
        window.location.href = '/YourLogoutPageUrl'; // آدرس صفحه خروج
    }

    function resetTimer() {
        clearTimeout(timeout);
        timeout = setTimeout(logout, 60000); // زمان inactivity به میلی ثانیه (در اینجا 60 ثانیه)
    }
};

inactivityTime();

در این کد، اگر کاربر هیچ عملی انجام ندهد، پس از 60 ثانیه (60000 میلی ثانیه) به صفحه ای که تعیین کرده اید هدایت می شود. شما می توانید زمان عدم فعالیت را به دلخواه تغییر دهید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : hamid_b 12:17 1400/06/09

همونطوری که fateme هم گفت خیلی کلی و بدون جزییات سوال رو طرح کردید. به طور کلی میشه گفت میتونید از طریق جاوا اسکریپت کنترل کنید اگر کاربر برای چند دقیقه یا چند ساعت هیچ کاری نکرد (مثلا صفحه اسکرول نخورد) یه پیام به سرور بفرسته و Session ها رو ببنده. به طور کلی اینجوری میشه کرد.

اگر کاری کردید یا کدی نوشتید قرار بدید تا بشه بررسی کرد.

به این پاسخ امتیاز بدهید    1
امتیاز: 518 رتبه: 4
1 نظر
hossein1244 : سلام بله مد نظرم همین هست، ممنون میشم راهنمایی کنید. یکسری از نرم افزارها هستن مثلا کاربر اگر ده دقیقه پشت سیستم نباشه(برای جلوگیری از سو استفاده سایر افراد) خودکار کاربر هدایت میشه به یک صفحه دیگه که رمز می‌خواد.

امتیاز کاربر : 9   رتبه کاربر : 72   تاریخ ثبت : 07:13 1400/06/10
پاسخ دهنده : hamid_b 14:35 1400/06/10

ببینید معمولا تا اونجایی که بنده دیدم اگر امنیت برای سیستم مهم باشه وقتی کاربر مرورگر رو میبنده Session رو حذف میکنن. یعنی کاربر هر بار که مرورگر رو باز میکنه باید نام کاربری و رمزعبور رو مجدد بزنه. شما میتونید توسط جی کوئری هم این مورد رو کنترل کنید ولی یه سری مشکلاتی هم داره که در ادامه میگم خدمتتون.

اگر شما از Identity در Asp.net Core استفاده می کنید برای لاگین از دستور زیر استفاده باید کنید :

await _signInManager.PasswordSignInAsync(model.UserName, model.Password, isPersistent : true, lockoutOnFailure: false);

همونطوری که می بینید isPersistant رو true قرار دادیم. اگر false کنیم باعث میشه به محض بسته شدن مرورگر کاربر Session یا همون نشست مربوط به لاگین از بین بره و کاربر دوباره باید نام کاربری و رمز عبور وارد کنه.

 

اما اگر میخواید خود مرورگر رو کنترل کنید کمی جریان متفاوته چون این موضوع سمت کلاینت میشه. کنترل کردن سمت کلاینت برای امنیت هم به طور عادی و با دستورات جی کوئری زیاد منطقی نیست چون اطلاعات در کلاینت رو کاربر میتونه به راحتی ببینه و تغییر بده و یا حتی غیر فعال کنه. ولی با دستورات زیر میتونید کنترل کنید که مرورگر تغییری داشته یا نه. (بازم میگم برای امنیت استفاده نکنید بهتره)

var isTabActive;

window.onfocus = function () { 
  isTabActive = true; 
}; 

window.onblur = function () { 
  isTabActive = false; 
}; 

// test
setInterval(function () { 
  console.log(window.isTabActive ? 'active' : 'inactive'); 
}, 1000);

 

به این پاسخ امتیاز بدهید    0
امتیاز: 518 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود