asp.net MVC会话到期后,如何继续左边操作?

2026-03-30 12:291阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计607个文字,预计阅读时间需要3分钟。

asp.net MVC会话到期后,如何继续左边操作?

我们有一个需要登录的内部ASP.NET MVC应用程序。登录功能运行良好,并设置了5分钟的有效期。在这段时间内,用户必须保持在单个页面上,否则会话将丢失。如果用户尝试刷新页面,系统将提示当前已过期。

我们有一个需要登录的内部ASP.NET MVC应用程序.登录工作很好,并做了预期的事情.我们的会话有效期为5分钟.在该段时间内坐在单个页面上之后,用户已经丢失了会话.如果他们尝试刷新当前页面或浏览到另一个页面,他们将获得登录页面.

我的问题是(在重新登录之后)告诉MVC重定向到他们的(刷新/浏览)尝试而不是总是获得HOME控制器页面?

通常这应该自动发生.当匿名用户命中受保护资源时(由于会话过期,他是匿名用户),FormsAuthentication模块会拦截此请求,并通过附加指向受保护资源的ReturnUrl查询字符串参数重定向到您在web.config中注册的loginUrl.

因此,例如,如果您将〜/ Account / LogOn配置为您的登录URL,并且匿名用户尝试点击〜/ Foo / Bar受保护资源,他将被重定向到〜/ Account / LogOn?ReturnUrl = / Foo / Bar.

然后,他将看到一个登录页面,在那里他将输入他的凭据并将表单提交给帐户控制器上的[HttpPost] LogOn操作.将验证凭据,如果有效,将生成新的表单身份验证cookie,并将用户重定向到最初请求的受保护资源.

以下是LogOn操作中的相应代码:

asp.net MVC会话到期后,如何继续左边操作?

[HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return View(model); }

注意成功验证后如何将用户重定向到默认的Home / Index或returnUrl参数.

当然,我在这里讲述的所有故事都适用于Visual Studio创建的默认ASP.NET MVC模板.如果由于某种原因您修改了此模板,这可能会解释您正在观察的行为.

在任何情况下,从我的回答中记住的事情是,如果您使用表单身份验证,模块将作为ReturnUrl查询字符串参数传递最初请求的受保护资源到配置的登录页面.因此,在成功进行身份验证后,您可以将用户重定向到此页面.

本文共计607个文字,预计阅读时间需要3分钟。

asp.net MVC会话到期后,如何继续左边操作?

我们有一个需要登录的内部ASP.NET MVC应用程序。登录功能运行良好,并设置了5分钟的有效期。在这段时间内,用户必须保持在单个页面上,否则会话将丢失。如果用户尝试刷新页面,系统将提示当前已过期。

我们有一个需要登录的内部ASP.NET MVC应用程序.登录工作很好,并做了预期的事情.我们的会话有效期为5分钟.在该段时间内坐在单个页面上之后,用户已经丢失了会话.如果他们尝试刷新当前页面或浏览到另一个页面,他们将获得登录页面.

我的问题是(在重新登录之后)告诉MVC重定向到他们的(刷新/浏览)尝试而不是总是获得HOME控制器页面?

通常这应该自动发生.当匿名用户命中受保护资源时(由于会话过期,他是匿名用户),FormsAuthentication模块会拦截此请求,并通过附加指向受保护资源的ReturnUrl查询字符串参数重定向到您在web.config中注册的loginUrl.

因此,例如,如果您将〜/ Account / LogOn配置为您的登录URL,并且匿名用户尝试点击〜/ Foo / Bar受保护资源,他将被重定向到〜/ Account / LogOn?ReturnUrl = / Foo / Bar.

然后,他将看到一个登录页面,在那里他将输入他的凭据并将表单提交给帐户控制器上的[HttpPost] LogOn操作.将验证凭据,如果有效,将生成新的表单身份验证cookie,并将用户重定向到最初请求的受保护资源.

以下是LogOn操作中的相应代码:

asp.net MVC会话到期后,如何继续左边操作?

[HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } } // If we got this far, something failed, redisplay form return View(model); }

注意成功验证后如何将用户重定向到默认的Home / Index或returnUrl参数.

当然,我在这里讲述的所有故事都适用于Visual Studio创建的默认ASP.NET MVC模板.如果由于某种原因您修改了此模板,这可能会解释您正在观察的行为.

在任何情况下,从我的回答中记住的事情是,如果您使用表单身份验证,模块将作为ReturnUrl查询字符串参数传递最初请求的受保护资源到配置的登录页面.因此,在成功进行身份验证后,您可以将用户重定向到此页面.