它不会返回视图。实际上,Action在调用之后仍然需要返回一个视图......那么发生了什么?
答案 0 :(得分:11)
如果您想使用FormsAuthentication
系统,则需要切换到此行(隐式使用returnUrl
参数)。
return Redirect(FormsAuthentication.GetRedirectUrl(model.UserName, true));
您将获得FormsAuthentication.RedirectFromLoginPage
本来会使用的网址,但您将使用RedirectResult
明确地保护该操作方法。
如果你走这条路线,你会想要在表单auth web.config中放一个defaultUrl
参数,以防有人直接进入你的登录页面(或者他们传入redirectUrl
没有通过FormsAuthentication的安全限制)。如果不覆盖默认值,错误的网址将被重定向到~/default.aspx
。在大多数MVC应用程序中,这可能是404.
<forms loginUrl="~/Account/LogOn" defaultUrl="~/" timeout="2880">
如果您启动新的MVC 3示例“Internet应用程序”,您会发现LogOn
操作方法处理与returnUrl
内部FormsAuthentication.RedirectFromLoginPage
类似的if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) {
return Redirect(returnUrl);
}
else {
return RedirectToAction("Index", "Home");
}
。
{{1}}
答案 1 :(得分:1)
正是它所说的 - 重定向。这是发送给浏览器的响应代码,要求它请求另一个URL。这就是在MVC或直接ASP.NET中的网页中请求视图的点。