ریدایرکت به صفحه لاگین بعد از خطای 401 unauthorized
سلام خسته نباشین
مواقعی هست که کاربر در سامانه لاگین میکنه و برای 4 ساعت اتورایز میشه ولی وقتی بعد از 4 ساعت بخواد تغییری انجام بده مجدد باید لاگین کنه ولی خطای 401 میده سامانه و باید به صفحه لاگین به صورت اتومات ریدایرکت کنه ، که نمیکنه
میخواستم ببینم چطور باید اینکار در صورت ارور 401 به صفحه لاگین ریدایرکت کنم
ممنون
builder.Services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie(options =>
{
options.AccessDeniedPath = "/Account/AccessDenied";
options.LoginPath = "/Account/Login";
options.LogoutPath = "/Account/Login";
//options.ForwardAuthenticate = "/Account/TimeOut";
options.ExpireTimeSpan = TimeSpan.FromHours(4);
options.Cookie.IsEssential = true;
options.SlidingExpiration = true;
});
گزاشتم این موضوع رو ولی وقتی زمان به اتمام میرسه و کاربر صفحه رو رفرش میده دیگه ریدایرکت نمیکنه تو صفحه لاگین و ارور 401 میده بعدش کاربر خودش باید به صورت دستی بره تو صفحه ی لاگین
پاسخ هوش مصنوعی
برای ریدایرکت کاربر به صفحه لاگین در صورت دریافت خطای 401، می توانید از middleware برای مدیریت خطاها استفاده کنید. در این مثال، زمانی که خطای 401 رخ می دهد، کاربر به صفحه لاگین هدایت می شود.
می توانید کد زیر را به فایل Startup.cs یا Program.cs اضافه کنید:
app.Use(async (context, next) =>
{
await next.Invoke();
if (context.Response.StatusCode == 401)
{
context.Response.Redirect("/Account/Login");
context.Response.End();
}
});
این کد یک middleware سفارشی ایجاد می کند که بعد از اینکه درخواست به endpoint خاصی رسید و اگر وضعیت پاسخ 401 باشد، کاربر را به صفحه لاگین ریدایرکت می کند.
همچنین مطمین شوید که این middleware قبل از middleware های دیگر مثل app.UseAuthentication() و app.UseMvc() قرار گیرد.
دلیل اینکه بعد از چند دقیقه یا چند ساعت کاربر شما logout میشه پاک شدن session های سرور هست. در واقع در سرورها یا هاست های اشتراکی به دلیل اینکه سایت های زیادی همزمان از سرور در حال استفاده هستن مسیول سرور میاد هر چند ساعت یک بار session ها رو پاک میکنه تا فشار کمتری به سرور هم وارد بشه.
برای رفع این مشکل 2 راه حل هست.
- اول اینکه از سرور اختصاصی استفاده کنید.
- دوم اینکه با مسیول سرور با هاست صحبت کنید که زمان پاک شدن session ها رو افزایش بده.
برای اینکه کاربر بعد از unAuthorize شدن به صفحه login هدایت بشه از کد زیر در کلاس startup استفاده کنید:
services
.AddAuthentication()
.AddCookie(options =>
{
options.LoginPath = "/login";
options.LogoutPath = "/logout";
});
من در آموزش انبارداری شرکت کردم نکته اینجاست که پروژه فرانت ما احراز هویت (Authorize) شده و بک ما هم که با استفاده از توکن ساخته شده نکته اینجاست فرانت من هنوز Authorize هست ولی پروژه بک من unAuthorize میشه
و وقتی میخوام صفحه ای رو باز کنم به مشکل Authorize در پروژه بک میخورم حالا میخوام بدون چطور اگه unAuthorize در پروژه بک اتفاق افتاد چطور مجدد تولید توکن کن - مشکل اینجاست که اگه وب سرویس unAuthorize برگردونه به صفحه لاگین ریدایرکت نمیشه و ارور زیر داده میشه
برای حل این مشکل باید کش پاک بشه تا مجدد Authorize انجام شود
نکته : به زمان منقضی شدن توکن و Authorize در 2 سمت فرانت و بک توجه کردم و مثل آموزش گزاشتم
نکته : سرور اختصاصی هست

- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- چرا استوری های واتس اپ برای دوستان نمایش داده نمیشن ؟
- چند تا استوری رایگان می تونیم تلگرام بذاریم ؟
- خطای Severity Code Description Project هنگام استارت پروژه
- کار نکردن navBar و sideBar در پروژه Asp.net core
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2