asp.net-mvc – ASP.NET MVC会话过期
我们有一个需要登录的内部ASP.NET MVC应用程序.登录工作很好,做了预期.我们的会话期限为15分钟.在一段时间内坐在单页上,用户已经丢失会话.如果他们尝试刷新当前页面或浏览到另一个页面,他们将在页面上登录.我们保留他们的请求,一旦他们登录,他们可以继续他们要求的页面.这很好.
但是,我的问题是在某些页面上有AJAX调用.例如,他们可以填写表单的一部分,漫游并让他们的会话过期.当他们回来时,屏幕仍然显示.如果他们只是填写一个框(将进行AJAX调用),AJAX调用将返回登录页面(在任何div的内部,AJAX应该简单地返回实际结果).这看起来很可怕 我认为解决方案是使页面本身过期(这样当会话终止时,它们会自动返回到登录屏幕,而不需要任何操作).不过,我想知道有没有意见/想法如何最好地实现这一点ASP.NET MVC中的最佳实践. 更新: 所以我继续在我的OnActionExecuting(根据Keltex的建议) if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { if (filterContext.HttpContext.Request.IsAjaxRequest()) { filterContext.HttpContext.Response.Write("Invalid session -- please login!"); filterContext.HttpContext.Response.End(); } else { ... } } 这肯定会使事情更好 – 现在即使他们有两个选项卡(一个具有一些可以触发的AJAX调用),并且在第二个选项卡中明确注销,他们将立即获得更有意义的东西,而不是一堆拧紧AJAX数据. 我仍然认为我将实现Javascript倒计时以及womp建议. 解决方法
具体来说,我不知道有什么最好的做法,但我现在正在为我们的应用程序做这个.我们选择了一个客户端解决方案,我们将会话超时值输出到主页面中的一些JavaScript中,并计算会话何时过期.
5分钟前,我们弹出一个模态对话框,说“你还在吗?配有倒数计时器.一旦定时器命中0:00,我们将浏览器重定向到登录页面. 它使用最少量的JavaScript来执行时间和计时器计算,以及一个简单的.ashx处理程序,如果用户点击“我回来了”,将刷新会话.在会话到期之前的对话框上.这样,如果他们及时返回,他们可以刷新会话而无需任何导航. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 什么时候使用HttpMessageHan
- asp.net – 为什么TextBox中有ViewState?
- asp.net – AppHarbor:不允许使用目录’/ App_G
- asp.net-mvc – ASP.NET MVC – 用于RenderParti
- asp.net – 配置IIS服务器使用Aurelia框架并推送
- 在ASP.NET MVC 3应用程序中编辑并继续
- asp.net-mvc-4 – ASP.NET MVC电子商务解决方案(
- asp.net-mvc-3 – 使用纯HTML和MVC 3上传大文件
- asp.net-mvc – ASP .NET MVC在视图之间存储大量
- GridView用法详解