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

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

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

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

امتیاز کاربر : 1617   رتبه کاربر : 2   تاریخ ثبت : 11:35 1400/06/09
پاسخ دهنده : hamid_b 12:17 1400/06/09

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

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

به این پاسخ امتیاز بدهید    1
امتیاز: 510 رتبه: 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
امتیاز: 510 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود