دسته بندی ها
18:45 1398/07/20

دلیل false بودن User.Identity.IsAuthenticated بعد از Login چیست؟

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1635     رتبه کاربر : 2
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3523
هوش مصنوعی

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

با توجه به توضیحات شما، ممکن است دلایل زیر باعث شده باشد که مقدار User.Identity.IsAuthenticated پس از لاگین به false باقی بماند:

  • عدم تنظیمات Middleware احراز هویت: اطمینان حاصل کنید که middleware مربوط به احراز هویت در Startup.cs به درستی تنظیم شده باشد. باید متد app.UseAuthentication(); را در متد Configure اضافه کنید.

  • عدم ایجاد کوکی احراز هویت: اطمینان حاصل کنید که سیستم کوکی احراز هویت پیکربندی شده است تا پس از لاگین، یک کوکی برای کاربر ایجاد شود.

  • اجازه دسترسی به Session: در صورتی که از Session استفاده می کنید، باید اطمینان حاصل کنید که Session درست پیکربندی شده باشد و هیچ تداخلی با احراز هویت وجود نداشته باشد.

  • تست در محیط مناسب: اگر در محیط لوکال تست می کنید، اطمینان حاصل کنید که همه جزییات پیکربندی شامل URL و پلتفرم به درستی تنظیم شده باشد. برخی اوقات در محیط های مختلف رفتار متفاوتی دارند.

شما همچنین می توانید بررسی کنید که آیا در قانونی که مربوط به AuthorizeCode است (برای تأیید شماره تلفن) روند لاگین تحت تأثیر قرار می گیرد یا خیر. آنگاه می توانید به صورت زیر به کد login اضافه کنید:

if (result.Succeeded)
{
    await _signInManager.SignInAsync(user, isPersistent: false);
}

این خط اطمینان می دهد که کاربر بعد از لاگین، به درستی احراز هویت شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : mrhadiannet 23:24 1398/07/26

سلام دوست عزیز منطقی که شما در حال پیاده سازی آن می باشید اشتباه است البته به نظر خودم چرا؟؟؟؟؟ چون وقتی Result.Succeed موفق آمیز باشه و نتیجه درست رو برگدونه ینی کاربر لاگین کرده و دیگر نیازی به بررسی مجدد User.Identity.IsAutica.... نخواهد بود ضمنا استفاده از دستور  User.Identity...  در ویو های برنامه برای چک لاگین شدن کاربر برای نمایش قسمت خاصی از صفحه کابرد دارد نه در یک متد پست.

به این پاسخ امتیاز بدهید    0
امتیاز: 4 رتبه: 113
پاسخ دهنده : mrhadiannet 23:24 1398/07/26

شما باید بعد از دستور زیر کاربر را به صفحه مور نظر خود هدایت کنید.

   if (result.Succeeded)
به این پاسخ امتیاز بدهید    0
امتیاز: 4 رتبه: 113
پاسخ دهنده : fateme 23:24 1398/07/26

پاسخ به mrhadiannet

ممنون از شما بابت پاسخ ولی وقتی کاربر لاگین میکنه دلیل نمیشه که Authorize هم شده. من میخوام کاربر رو بعد از لاگین هدایت کنم به یک کنترلر. این کنترلر دارای نقش User هست و تا زمانی که دستور User.Identity.IsAuticate برابر با false باشه کاربر نمیتونه وارد این کنترلر بشه. لاگین کردن دلیل بر این نیست که کاربر به همه کنترلرها یا اکشن ها دسترسی داره.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
پاسخ دهنده : mohammad-i 14:35 1399/10/11

چرا Role های کاربر رو بررسی نمیکنی؟

کاربری که لاگین میکنه یه سری Role هم داره. با توجه به role ها هدایتش کن.

اگر هم role نداشت، یا لاگین نیست یا Authenticate نشده.

var UserRole = _userManager.GetRolesAsync(User).Result;

//redirect User
if (UserRole.Contains("Writer"))
  {
    return Redirect("/Writer/Home");
  }
else
  {
   return Redirect("/Viewer/Home");
  }

 

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