asp.net-mvc - FormsAuthentication.RedirectFromLoginPage() 如何工作?

标签 asp.net-mvc redirect

它不返回 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/

相关文章:

javascript - 移动 'back' 按下后运行 javascript

asp.net-mvc - 在 Controller 中使用 "HttpPost"时无法找到资源错误

ruby-on-rails - 可以在 Rails 中创建此重定向路线吗?

javascript - ng-click 后 AngularJS 重定向

c# - ASP.NET MVC 中缓存和 session 的访问差异

json - 如何将表单作为 View 模型对象以及其他参数发布到 MVC 中的 Controller ?

asp.net-mvc - MVC Controller.File 返回空白 pdf

apache - https 到 http 重定向

python - 在 View 之间传递和检索参数时,反向为 '',没有未找到参数

php - 让用户留在移动网站上