دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
خروج کاربر غیرفعال در ASP.NET Core
1404/04/08 -
مفهوم ListView در سیشارپ
1404/04/07 -
کنترل ListBox در سی شارپ
1404/02/07 -
مدیریت تراکنش در پایگاه داده SQL
1404/02/06 -
کنترل LinkLable در سی شارپ
1404/02/05 -
عملگر تراکنش در پایگاه داده SQL
1404/02/02
خروج کاربر غیرفعال در ASP.NET 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، میتوانید این فرآیند را بهصورت خودکار، سریع و امن انجام دهید.
اگر شما هم با مشکل خروج اجباری کاربران مواجه هستید، این راهکارها را در پروژه خود پیادهسازی کنید و امنیت سیستم را ارتقا دهید.
دوره های مرتبط

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