Перенаправлять пользователя на определенную страницу в зависимости от их роли в ASP.NET основной бритва
Я пытаюсь перенаправить пользователя на определенную страницу после входа в систему идентификации на основе ролей. Я использую идентификационный логин.
Ниже приведен код, который я пытаюсь использовать. Но это никуда меня не перенаправляет. Если я удаляю условия ролей, то это перенаправление.
public async Task<IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false); if (result.Succeeded) { if(!string.IsNullOrEmpty(returnUrl)) { _logger.LogInformation("User logged in."); 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); } // 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(); } } // If we got this far, something failed, redisplay form return Page(); }
Что я уже пробовал:
if i do it like following then it is redirecting: <pre lang="c#">if(!string.IsNullOrEmpty(returnUrl)) { _logger.LogInformation("User logged in."); return Redirect("~/Student/Dashboard"); }
в чем причина этого и как я могу решить эту проблему?
F-ES Sitecore
У нас нет доступа к вашим учетным записям или учетным данным, мы не знаем ваших ролей или правильно ли все настроено, поэтому трудно сказать. Что я действительно советую вам сделать, так это использовать отладчик для пошагового просмотра вашего кода строка за строкой, чтобы увидеть, какой путь он принимает и чем этот путь отличается от того, что вы используете. например, если ваш IsInRole возвращает false, когда вы думаете, что это должно быть правдой, то вам нужно сосредоточиться на том, почему это происходит.
Harpreet_125
Он идет по правильному пути. Отладчик возвращает ложное значение для следующего кода.. вот в чем проблема.. но я не вижу ничего плохого..
если (пользователь.Метод Isinrole("Студент"))
{
return Redirect("~/Student/Dashboard");
}