以下代码片段来自我的ASP.NET MVC 5应用程序:
public ActionResult Ask(string id) {
if (!this.User.Identity.IsAuthenticated) {
string retUrl = Request.Url.AbsoluteUri;
return RedirectToAction("Login", "Account", new { returnUrl = retUrl });
}
...
}
Run Code Online (Sandbox Code Playgroud)
这个想法是,如果用户还没有登录,他将被带到登录页面,然后返回到这个"询问"页面.
例如,当用户输入时,http://example.com/Home/Ask/12345678使用正确的id值调用方法Ask().用户现在被重定向到登录页面.
在AccountController中的Login()代码成功验证用户后,它调用ReturnToLocal(),传入我们期望的URL(http://example.com/Home/Ask/12345678).但是,ASP .NET不是调用Ask()方法,而是以某种方式最终调用Index()方法.
感谢您帮助理解我的重定向被破坏的原因.问候.
既然你没有向我们提供Login动作方法和RedirectToLocal方法,我假设你使用的AccountController是MVC5模板.如果是这样
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)
您可以看到该RedirectToLocal方法检查returnUrl参数是否为"localUrl".如果不是,它会调用索引.在您的ASK方法你逝去 string retUrl = Request.Url.AbsoluteUri的returnUrl是不是本地(以http://)!
尝试 string retUrl = Request.Url.PathAndQuery
| 归档时间: |
|
| 查看次数: |
5110 次 |
| 最近记录: |