"

خروج کاربر غیرفعال در ASP.NET Core

زهیر صفری 1404/04/08 0 12
لینک کوتاه https://zoheirsoftware.com/z/5861b56a3 |
خروج فوری کاربر غیرفعال ASP.NET Core Identity,خروج کاربر در asp core

 ✅ چرا باید کاربران غیرفعال را سریعاً از سیستم خارج کنیم؟

در بسیاری از پروژه‌های تحت ASP.NET Core، به‌ویژه سیستم‌هایی با دسترسی‌های حساس یا کاربران نقش‌دار، غیرفعال‌سازی حساب کاربری (به دلایل امنیتی یا اداری) ضروری است.

اما صرف غیرفعال‌سازی در دیتابیس کافی نیست؛ اگر کاربر همچنان به سیستم وارد باشد، تا زمانی که کوکی معتبر است، می‌تواند فعالیت کند. اینجاست که نیاز به خروج فوری یا force logout داریم.

 

🔐 راه‌حل حرفه‌ای خروج اجباری با استفاده از SecurityStamp

 

در ASP.NET Core Identity، ویژگی‌ای به نام SecurityStamp وجود دارد که دقیقاً برای این کار طراحی شده است. با تغییر مقدار این ویژگی، کوکی‌های فعلی کاربر بی‌اعتبار می‌شوند.

 

مراحل پیاده‌سازی:

غیرفعال‌سازی یا حذف منطقی کاربر:

var user = await _userManager.FindByIdAsync(userId);
if (user != null)
{
    user.IsActive = false; // حذف منطقی
    await _userManager.UpdateSecurityStampAsync(user); // بی‌اعتبارسازی کوکی
    await _userManager.UpdateAsync(user);
}

 

بررسی SecurityStamp در هر درخواست:

در Startup.cs یا Program.cs:

 

services.Configure<SecurityStampValidatorOptions>(options =>
{
    options.ValidationInterval = TimeSpan.Zero; // بررسی در هر درخواست
});

 

⛔ هشدار: مقدار صفر باعث بررسی در هر درخواست می‌شود. اگر کاربران زیادی داریدیا سیستم های بزرگی دارید ، بهتر است از زمان متعادل مثل 1 تا 5 دقیقه استفاده کنید.

 

 

⚙️ ترکیب با Middleware برای بررسی IsActive

حتی اگر SecurityStamp بررسی شود، بهتر است یک middleware بنویسید تا وضعیت IsActive کاربر را بررسی کرده و در صورت غیرفعال بودن، او را از سیستم خارج کند:

public class InactiveUserMiddleware
{
    private readonly RequestDelegate _next;

    public InactiveUserMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context, UserManager<User> userManager)
    {
        if (context.User.Identity.IsAuthenticated)
        {
            var userId = userManager.GetUserId(context.User);
            var user = await userManager.FindByIdAsync(userId);

            if (user != null && user.IsActive == false)
            {
                await context.SignOutAsync();
                context.Response.Redirect("/Account/Login");
                return;
            }
        }

        await _next(context);
    }
}

 

 فراخوانی Middleware مورد نظر :

app.UseMiddleware<InactiveUserMiddleware>();

 

📌 نتیجه‌گیری

برای پروژه‌هایی که از ASP.NET Core Identity استفاده می‌کنند، اطمینان از خروج سریع کاربران غیرفعال‌شده، یک نیاز امنیتی مهم است.

با ترکیب SecurityStamp و middleware، می‌توانید این فرآیند را به‌صورت خودکار، سریع و امن انجام دهید.

 

 

اگر شما هم با مشکل خروج اجباری کاربران مواجه هستید، این راهکارها را در پروژه خود پیاده‌سازی کنید و امنیت سیستم را ارتقا دهید.

دوره های مرتبط
آموزش جامع ساخت نرم افزار حسابداری و انبارداری ,آموزش جامع ساخت نرم افزار حسابداری,آموزش جامع ساخت نرم افزار انبارداری

آموزش جامع ساخت نرم افزار حسابداری و انبارداری

سیستم حسابداری و انبارداری یکی از ابزارهای مهم برای سازمان‌ها و شرکت‌ها است که فرایند های عملیاتی را بهبود و افزایش می دهد.

10,000,000 6,000,000 تومان

32 نظر

4.8k بازدید

ارسال دیدگاه

برای ارسال نظر لطفا ورود یا ثبت نام کنید.