دسته بندی ها
21:41 1400/02/30

مشکل در Redirect و ماندن در صفحه لاگین در Asp.net Core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core

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

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

به نظر می رسد که شما در کنترلر لاگین، متغیر user را تعریف نکرده اید، که باعث می شود چک کردن نوع کاربر (UserType) به درستی عمل نکند و از این رو ریدایرکت انجام نشود. ابتدا باید کاربر را با استفاده از نام کاربری بازیابی کنید و سپس به نوع کاربر آن دسترسی پیدا کنید. برای این کار می توانید کد را به شکل زیر اصلاح کنید:

public async Task<IActionResult> Login(LoginViewModel model)
{
    if (ModelState.IsValid)
    {
        var user = await _userManager.FindByNameAsync(model.UserName);
        if (user == null)
        {
            ModelState.AddModelError("UserName", "کاربر یافت نشد");
            return View(model);
        }

        var result = await _signInManager.PasswordSignInAsync(user, model.Password, true, lockoutOnFailure: false);
        if (result.Succeeded)
        {
            if (user.UserType == 1) // یا نوع مورد نظر دیگر
            {
                return Redirect("/AdminPanel/Admin/Index");
            }
        }
        else
        {
            ModelState.AddModelError("Password", "اطلاعات ورود صحیح نیست");
            return View(model);
        }
    }
    return View(model);
}

همچنین، مطمین شوید که متد UseAuthentication() قبل از UseAuthorization() در متد Configure کلاس Startup قرار دارد، که در کد شما به درستی انجام شده است:

app.UseAuthentication();
app.UseAuthorization();

با این تغییرات، پس از ورود موفقیت آمیز، کاربر باید به صفحه مشخص شده (در اینجا "/AdminPanel/Admin/Index") ریدایرکت شود.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 22:15 1400/02/30

دستوراتی که نوشتید درسته. فقط کافیه در Startup.cs و در متد Configure جای دو میان افزار UseAuthentication و UseAuthorization رو عوض کنید.

//1
app.UseAuthentication();
//2
app.UseAuthorization();

ترتیب به کارگیری این دو میان افزار مهمه.

انتقال کاربر به مسیر خاص بعد از لاگین

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