FormsAuthentication.RedirectFromLoginPage()如何工作?

时间:2010-01-02 18:58:30

标签: asp.net-mvc redirect

它不会返回视图。实际上,Action在调用之后仍然需要返回一个视图......那么发生了什么?

2 个答案:

答案 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中的网页中请求视图的点。