Попытка собрать страницу входа в систему mvc, которая будет перенаправлять обратно на исходную страницу, для которой требовалась авторизация на основе других сообщений переполнения стека.
Перенаправление с
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "login" },
{"ReturnUrl", filterContext.HttpContext.Request.RawUrl},
{ "controller", "mycontroller" }
});
}
просмотр страницы входа имеет
@Html.Hidden("returnUrl", ViewContext.HttpContext.Request.Params["returnurl"])
находится внутри формы. Первоначально я использовал ViewContext.HttpContext.Request.Url.PathAndQuery, основанный на другом сообщении на форуме, но это включало весь URL.
Внутри контроллера у меня
[HttpPost]
public ActionResult Login(MyModel model)
{
if (loginisValid)
return Redirect(model.ReturnUrl);
else
return View();
}
но это ничего не делает, только возвращает оригинальную страницу, даже если она попадает в Redirect. Я также пробовал RedirectToAction и RedirectToRoute, но они дают ошибки. Я тестирую это на моей странице индекса, которая находится по адресу localhost / admin / mycontroller. Таким образом, model.ReturnUrl в настоящее время содержит «/ admin / mycontroller». Что я должен изменить, чтобы сделать эту работу?