它不返回 View 。事实上,调用此操作后,Action 仍然需要返回一个 View ...那么这是怎么回事?
最佳答案
如果您想使用 FormsAuthentication
系统,则需要切换到此行(隐式使用 returnUrl
参数)。
return Redirect(FormsAuthentication.GetRedirectUrl(model.UserName, true));
您将获得 FormsAuthentication.RedirectFromLoginPage
本来使用的 URL,但您将使用 RedirectResult
显式地从操作方法中退出。
注意
如果您采用此路线,您需要在 forms auth web.config 行中放置一个 defaultUrl
参数,以防有人直接进入您的登录页面(或者他们传入 redirectUrl
未通过 FormsAuthentication 的安全限制)。如果不覆盖默认值,错误的 URL 将被重定向到 ~/default.aspx
。在大多数 MVC 应用程序中,这可能是 404。
<forms loginUrl="~/Account/LogOn" defaultUrl="~/" timeout="2880">
替代方案
如果您启动一个新的 MVC 3 示例“Internet 应用程序”,您会发现一个 LogOn
操作方法,它处理类似于 FormsAuthentication 的
在内部执行。returnUrl
。 RedirectFromLoginPage
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) {
return Redirect(returnUrl);
}
else {
return RedirectToAction("Index", "Home");
}
关于asp.net-mvc - FormsAuthentication.RedirectFromLoginPage() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992461/