دسته بندی ها
02:17 1400/02/04

خروج (Log out) ناخواسته و سریع از وب سایت در Asp.net Core

مشخصات سوال کننده :
کاربر : hoeinsmart     امتیاز کاربر : ‎−1     رتبه کاربر : 7103
دسته بندی : Asp.net Core Asp.net Mvc Asp.net Web Form Html

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3775
1 نظر
saedbfd : روی هاست یا روی لوکال ؟

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 02:46 1400/02/04
هوش مصنوعی

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

برای بررسی علت خروج ناخواسته کاربران از وب سایت در 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. **پیغام های خطا و لاگ های دیگر:** مطمین شوید که لاگ های دیگر برنامه را بررسی کنید تا ببینید آیا خطایی در یکجا وجود دارد که باعث می شود کاربر از سیستم خارج شود.

با استفاده از روش های بالا می توانید دلایل خروج ناخواسته کاربران را شناسایی کرده و باگ های موجود را برطرف نمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 01:23 1400/02/05

برای اینکه کاربر توی سایت شما لاگین بمونه میتونید موقع ورود کاربر به سایت 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

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