asp.net – MVC会话到期 – 继续左边
我们有一个需要登录的内部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操作中的相应代码: [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查询字符串参数传递最初请求的受保护资源到配置的登录页面.因此,在成功进行身份验证后,您可以将用户重定向到此页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – HttpContext.Error vs HttpContext.Server.GetL
- 初识ABP vNext(12):模块的独立运行与托管
- asp.net web api和odata的路由
- entity-framework – 在viewbag中传递查询结果
- ASP.NET – 提高性能
- 逗号之后拆分字符串直到字符串结束 – asp.net c#
- asp.net – 在回发上设置viewstate
- 在ASP.NET中如何检测上传文件的MIME类型?
- asp.net – 如何在iframe中提交后刷新iframe父页面?
- asp.net-mvc – 如何将Telerik ComboBox中的数据绑定到我的