一直试图整合一个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基于另一个论坛帖子,但其中包括整个网址.
我有控制器内部
[HttpPost]
public ActionResult Login(MyModel model)
{
if (loginisValid)
return Redirect(model.ReturnUrl);
else
return View();
}
但这只会返回原始页面,即使它正在击中重定向.我也尝试过RedirectToAction和RedirectToRoute,但是那些会给出错误.我正在我的索引页面上测试它,该索引页面位于localhost / admin / mycontroller.所以model.ReturnUrl目前包含“/ admin / mycontroller”.我应该改变什么来使这项工作?
最佳答案 事实证明,所有这些代码都是正确的.但是,我没有放
[RequireHttps(Order=0)]
在我的控制器上,所以它永远不会正确地存储cookie,并在重定向回我的索引页面后再次失败授权.