ذخیره زمان خروج کاربر در همه حالات Asp.net core
با سلام دوستان وقت بخیر
میخوام زمانی که که کاربر از سیستم خارج میشه زمان خروج در دیتابیس ذخیره بشه البته جدول ساختم اما بایستی باتن خروج بزنه تا ایجاد بشه اما زمانی مرورگر بسته میشه یا برق قطع میشه بایستی چی کار بکنم.
با تشکر
پاسخ هوش مصنوعی
برای ذخیره زمان خروج کاربر در همه حالات، از جمله زمانی که مرورگر بسته می شود یا برق قطع می شود، می توانید از برخی تکنیک ها و روش ها استفاده کنید. یکی از روش ها استفاده از JavaScript
برای شناسایی رویدادهای خروج و سپس ذخیره سازی آن در سرور است.
شما می توانید از رویداد beforeunload
استفاده کنید تا زمانی که کاربر در حال خروج است، یک درخواست به سرور ارسال کنید. به این صورت:
window.addEventListener("beforeunload", function (event) {
navigator.sendBeacon("/api/your-endpoint", JSON.stringify({ exitTime: new Date() }));
});
در این کد، شما باید آدرس /api/your-endpoint
را به آدرس مناسب API خود تغییر دهید که زمان خروج را ذخیره کند. با استفاده از navigator.sendBeacon
، می توانید اطمینان حاصل کنید که داده ها حتی اگر کاربر بلافاصله صفحه را ببندد نیز ارسال می شوند.
سپس در سرور خود، می توانید اطلاعات زمان خروج را در دیتابیس ذخیره کنید. یک مثال از نحوه دریافت این داده ها در ASP.NET Core:
[HttpPost]
public IActionResult YourEndpoint([FromBody] ExitTime exitTime) {
// کد ذخیره سازی زمان در دیتابیس
return Ok();
}
به این ترتیب، شما می توانید اطمینان حاصل کنید که زمان خروج کاربران در شرایط مختلف به درستی ثبت و ذخیره می شود.
برای کنترل بعضی از رویدادهای مرورگر مثل بسته شدن مرورگر دستور مشخصی که در همه مرورگرها و همه حالات کار بکنه وجود نداره. یه سری دستورات هست ولی ممکنه همه مرورگرها ساپورت نکنن.
نمایش پیغام قبل از بسته شدن مرورگر توسط جاوا اسکریپت
فرض کنید می خواهیم وقتی کاربر مرورگر رو بست یک پیغام نمایش داده بشه. حالا از همین مثال میتونید استفاده کنید و به جای پیغام میتونید اطلاعات رو به سمت سرور بفرستید یا اینکه در دیتابیس اطلاعاتی رو ذخیره کنید.
window.onbeforeunload = function (e) {
e = e || window.event;
// For IE and Firefox prior to version 4
if (e) {
e.returnValue = 'Sure?';
}
// For Safari
return 'Sure?';
};
همونطوری که می بینید احتمالا مرورگر Chrome از دستورات بالا پشتیبانی خوبی نکنه.
میتونید از کدهای زیر هم استفاده کنید :
$(document).ready(function () {
window.hideWarning = false;
window.addEventListener('beforeunload', (event) => {
if (!hideWarning) {
event.preventDefault();
event.returnValue = '';
}
});
});
دستورات بالا رو هم چک کردم در برخی حالات جواب داد.
با سلام و تشکر
البته این روش جواب داد اما هر بار که میخوام برم روی صفحه دیگه این کد اجرا میشه البته در قسمت Admin گزاشتم این خوب نیست چون هر بار رفرش میشه و ایا کدی هست که فقط زمانی که کلا مروگر در حال بسته شدن هست استفاده بشه
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2