在我的MVC3应用程序中通常的AccountController中,如果设置了returnUrl(在我的情况下,我手动设置),它将调用Redirect(returnUrl).
假设我的返回URL是/ Admin / HealthCheck(它确实是).当我调试时,我从重定向调用中获取了一个类似http:// localhost:3279 / Admin / HealthCheck的URL.
然后,我将我的应用程序部署到http:// localhost / Test.在这种情况下,Redirect(returnUrl)将我重定向到http:// localhost / Admin / HealthCheck而不是预期的http:// localhost / Test / Admin / HealthCheck.
这里发生了什么?我该如何解决这个问题(如果它是可修复的)?
以下是(标准)MVC3 AccountController的片段;你可以看到我从查询字符串中获取返回URL的位置(例如,http:// localhost / Test / logon?ReturnUrl = / Admin / HealthCheck,尽管是URL编码的).
[HttpPost] public ActionResult logon(logonModel model,string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName,model.Password)) { returnUrl = Request.Params["ReturnUrl"]; FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) { return Redirect(returnUrl); } else { return RedirectToAction("Index","Home"); } } else { ModelState.AddModelError("","The user name or password provided is incorrect."); } }
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。