سلام
مکانیزم درست و کامل کنترل دسترسی ، جزئیات زیادی داره که موضوع بحث این تاپیک نیست.
اما به صورت دم دستی اگر بخواید این مشکل رو حل کنید میشه به صورتی که خواهم گفت عمل کنید:
در جدول کاربران ، یک فیلد به نام LastActivityDateTime قرار بدید ، هنگامی که کاربر مشغول کار با نرم افزار هست ، مقدار اون فیلد رو آپدیت کنید. (مثلا با هر کوئری که اجرا می کنید ، مقدار اون فیلد هم به تاریخ و زمان فعلی آپدیت بشه)
حالا شما در نظر داشته باشید ، موقع لاگین کاربر ، اگر فیلد Active مقدارش برابر True باشه و مدت زمان قابل توجهی از عدم فعالیتش گذشته باشه ، میتونید مقدار فیلد رو به False تغییر بدید و عمل لاگین رو انجام بدید.
در صورتی که تفاضل زمان آخرین فعالیت با زمان فعلی از حد مشخصی کمتر بود ، میتونید فرض بگیرید کاربر در حال فعالیت هست و اجازه لاگین مجدد رو ندید.
حتی میتونید این زمان رو هم در قالب یک تنظیم در سیستمتون نگهداری کنید (مثلا حد عدم فعالیت کاربر برای این منظور رو 30 دقیقه در نظر بگیرید)
این یعنی حتی اگر برق قطع بشه و یا اگر به علت هر اتفاقی برنامه بسته بشه و اون فیلد آپدیت نشه ، نهایتا کاربر میتونه بعد از گذشتن اون زمان مشخص شده ، دوباره لاگین کنه و به کارش ادامه بده.