加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC会话过期

发布时间:2020-12-15 23:27:46 所属栏目:asp.Net 来源:网络整理
导读:我们有一个需要登录的内部ASP.NET MVC应用程序.登录工作很好,做了预期.我们的会话期限为15分钟.在一段时间内坐在单页上,用户已经丢失会话.如果他们尝试刷新当前页面或浏览到另一个页面,他们将在页面上登录.我们保留他们的请求,一旦他们登录,他们可以继续他们
我们有一个需要登录的内部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处理程序,如果用户点击“我回来了”,将刷新会话.在会话到期之前的对话框上.这样,如果他们及时返回,他们可以刷新会话而无需任何导航.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读