Спасибо Видмантасу Блажевичусу совет, я нашел решение.Когда пользователь нажимает кнопку регистрации, я перенаправляю его на страницу регистрации с обратным URL-адресом в качестве параметра запроса.Когда пользователь подтверждает или отменяет регистрацию, он перенаправляется обратно к действию AccountContoller.Login(string returnUrl)
.Затем, когда пользователь входит в систему, он успешно перенаправляется обратно на исходный сайт.
Это действие AccountControler.Register
, когда пользователь нажимает зарегистрироваться на странице входа в систему:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Register(LoginInputModel model)
=> RedirectToAction("register", "registration", new { returnUrl = model.ReturnUrl });
Это вызывает RegistrationController.Register
чтобы показать форму регистрации:
[HttpGet]
[Route("register")]
public ViewResult Register([FromQuery]string returnUrl)
=> View("Views/Account/Registration.cshtml", new UserRegistrationViewModel(returnUrl));
Действие RegistrationController.Cancel
выполняется, когда пользователь нажимает кнопку отмены на странице регистрации:
[HttpPost]
[Route("cancel")]
public IActionResult Cancel(UserRegistrationViewModel viewModel)
=> RedirectToAction("login", "account", new { returnUrl = viewModel.ReturnUrl });
В форме регистрации используйте возвращаемое свойство URL модели вида, подобной этой@Html.HiddenFor(x => x.ReturnUrl)
в противном случае он не будет установлен в режиме отмены обратной передачи.