خروج (Log out) ناخواسته و سریع از وب سایت در Asp.net Core
سلام. برنامه بصورت ناخواسته sigh out میشود.
برای کنترل کاربر از کلاس usermanager و authorize استفاده شده.
در هنگام ورود مشکلی ندارد.
چطوری میشه بررسی کرد علت خروج چیه ؟ میشه لاگی از کلاس usermanager داشت ؟
پاسخ هوش مصنوعی
برای بررسی علت خروج ناخواسته کاربران از وب سایت در ASP.NET Core و لاگ گیری از کلاس UserManager، می توانید موارد زیر را انجام دهید:
1. **استفاده از Middleware برای لاگ گیری:** می توانید یک Middleware بسازید که ورود و خروج کاربران را ثبت کند. در این Middleware می توانید اطلاعات لاگ را در یک فایل ثبت کنید یا به یک سرویس لاگ گیری ارسال کنید.
public class LoggingMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger _logger;
public LoggingMiddleware(RequestDelegate next, ILogger logger)
{
_next = next;
_logger = logger;
}
public async Task InvokeAsync(HttpContext context)
{
if (context.User.Identity.IsAuthenticated)
{
_logger.LogInformation($"User {context.User.Identity.Name} is authenticated.");
}
else
{
_logger.LogWarning("User is logged out.");
}
await _next(context);
}
}
2. **ثبت خروج کاربران در UserManager:** می توانید متد `SignOutAsync` را در کلاس `UserManager` افراط کرده و در آن لاگ گیری کنید. اینگونه می توانید زمان و علت خروج کاربران را ثبت کنید.
public class CustomUserManager : UserManager
{
private readonly ILogger _logger;
public CustomUserManager(IUserStore store, IOptions optionsAccessor, IPasswordHasher passwordHasher,
IEnumerable> userValidators, IEnumerable> passwordValidators,
ILookupNormalizer keyNormalizer, IdentityErrorDescriber errors, IServiceProvider services, ILogger logger)
: base(store, optionsAccessor, passwordHasher, userValidators, passwordValidators, keyNormalizer, errors, services)
{
_logger = logger;
}
public override async Task SignOutAsync()
{
_logger.LogInformation("User is signing out.");
await base.SignOutAsync();
}
}
3. **بررسی زمان بندی ها و توکن ها:** ممکن است تاخیر در ارسال توکن های CSRF و مشکلات کدهای جلسه (Session) نیز باعث این مشکلات شود. مطمین شوید که توکن ها به درستی تنظیم و ارسال می شوند.
4. **پیغام های خطا و لاگ های دیگر:** مطمین شوید که لاگ های دیگر برنامه را بررسی کنید تا ببینید آیا خطایی در یکجا وجود دارد که باعث می شود کاربر از سیستم خارج شود.
با استفاده از روش های بالا می توانید دلایل خروج ناخواسته کاربران را شناسایی کرده و باگ های موجود را برطرف نمایید.
برای اینکه کاربر توی سایت شما لاگین بمونه میتونید موقع ورود کاربر به سایت IsPersistant رو برابر با true (مرا بخاطر بسپار) کنید. در این صورت کاربر تا زمانی که خودش روی دکمه خروج از سایت کلیک نکرده Log Out نمیشه .
[HttpPost]
public IActionResult Login()
{
await _signInManager.PasswordSignInAsync(user.UserName,
model.Password, IsPersistant : true, lockoutOnFailure: true);
}
اما اگر این کار رو هم انجام دادید و روی هاست بردید پروژتون رو و مجدد سریع Log Out میشه بخاطر این هست که هاست شما یک هاست اشتراکی هست و در این هاست ها معمولا هر چند دقیقه یک بار کلیه Session های روی حافظه پاک میشن و کاربران Log Out میشن.
- آموزش استفاده از پلاگین گردونه شانس در 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