//Your returnUrl value always is null.
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
returnUrl = returnUrl ?? Url.Content("~/");
if (ModelState.IsValid)
{
var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
if (User.IsInRole("Student"))
{
return Redirect("~/Student/Dashboard");
}
else if (User.IsInRole("Counsellor"))
{
return Redirect("~/Counsellor/Dashboard");
}
else if (User.IsInRole("School"))
{
return Redirect("~/School/Dashboard");
}
else if (User.IsInRole("Admin"))
{
return Redirect("~/Admin/Dashboard");
}
else{
_logger.LogInformation("User logged in.");
return LocalRedirect(returnUrl);
}
}
if (result.RequiresTwoFactor)
{
return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = Input.RememberMe });
}
if (result.IsLockedOut)
{
_logger.LogWarning("User account locked out.");
return RedirectToPage("./Lockout");
}
else
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
}
return Page();
}