в приложении MVC код доходит до return Redirect(login.ReturnUrl ?? "/Home"); но по указанному URL не переходит
Допустим на странице Home/Index нажимаю на ссылку
<a asp-area="User" asp-controller="cart" asp-action="Add" asp-route-productId="@produrt.Id" role="button"><img src="~/images/korzina.png" width="30" height="30" /></a>
(на самом деле не важно откуда и куда я пытаюсь перейти, это происходит при совершении любого действия для которого необходима авторизация)
меня как и должно быть перебрасывает на эту страницу:
<form method="post">
<div class="modal-body">
<div>
<h3>Вход</h3>
</div>
<input type="hidden" name="ReturnUrl" value="@Model.ReturnUrl" />
<div asp-validation-summary="All">
<div class="row">
<div class="col-6">
<input class="form-control" type="text" asp-for="UserName" />
<span asp-validation-for="UserName"></span>
</div>
</div>
<div class="row">
<div class="col-6">
<input class="form-control" type="password" asp-for="Password" />
<span asp-validation-for="Password"></span>
</div>
</div>
<div class="row">
<div class="col-6">
<label>Запомнить меня</label>
<input class="form-control" type="checkbox" name="rememberMe" asp-for="RememberMe" value="true" />
<span asp-validation-for="RememberMe"></span>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" asp-area="User" asp-controller="Account" asp-action="Login">Войти</button>
<a asp-area="User" asp-controller="Account" asp-action="Register" asp-route-returnUrl="@Model.ReturnUrl">Регистрация </a>
</div>
</form>
Отсюда передается модель в следующий контроллер в метод login, причем модель валидная с ожидаемым returnUrl, код доходит до return Redirect(login.ReturnUrl ?? "/Home");
А дальше я не понимаю что происходит, я просто снова оказываюсь на странице авторизации, на скриншоте видно что данные в модели корректные и что код заходит в if и доходит до return
public class AccountController : Controller
{
private readonly UserManager<User> _userManager;
private readonly SignInManager<User> _signInManager;
public AccountController(UserManager<User> userManager, SignInManager<User> signInManager)
{
_userManager = userManager;
_signInManager = signInManager;
}
public IActionResult Login(string returnUrl)
{
return View(new Login() { ReturnUrl = returnUrl });
}
[HttpPost]
public IActionResult Login(Login login)
{
if (ModelState.IsValid)
{
var result = _signInManager.PasswordSignInAsync(login.UserName, login.Password, login.RememberMe, false).Result;
if (result.Succeeded)
{
return Redirect(login.ReturnUrl ?? "/Home");
}
else
{
ModelState.AddModelError("", "Неправильный пароль!");
}
}
return View("Login", login);
}



Ответы (1 шт):
Судя по тому что у вас после попытки авторизации появляется то же окно, надо проверить 2 варианта:
а что возвращает метод
/user/cart/add? Если он не возвращает вьюшку или не роутит по истории / роутит в определённое место, вы останетесь на последней вьюшке которую запросили.посмотрите как настроена внутренняя авторизация (cookies, jwt tokents, etc) - возможно у вас проблема здесь