gpt4 book ai didi

asp.net-mvc - ASP.NET MVC session 过期

转载 作者:行者123 更新时间:2023-12-02 04:59:51 26 4
gpt4 key购买 nike

我们有一个需要登录的内部 ASP.NET MVC 应用程序。登录效果很好并且符合预期。我们的 session 有效期为 15 分钟。在停留在单个页面上一段时间后,用户就失去了 session 。如果他们尝试刷新当前页面或浏览到另一个页面,他们将获得登录页面。我们会存储他们的请求,以便他们登录后可以继续访问他们请求的页面。这效果很好。

但是,我的问题是在某些页面上有 AJAX 调用。例如,他们可能会填写部分表格,然后走开并让 session 过期。当他们回来时,屏幕仍然显示。如果他们只是填写一个框(这将进行 AJAX 调用),AJAX 调用将返回登录页面(在 AJAX 应该简单返回实际结果的任何 div 内)。这看起来很可怕。

我认为解决方案是使页面本身过期(这样当 session 终止时,它们会自动返回到登录屏幕,而无需执行任何操作)。但是,我想知道是否有关于如何最好地实现这一点的意见/想法,特别是关于 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 数据。

我仍然认为我也会实现 womp 建议的 Javascript 倒计时。

最佳答案

具体来说,我不知道有任何相关的最佳实践,但我现在正在为我们的应用程序执行此操作。我们选择了客户端解决方案,将 session 超时值输出到母版页中的某些 JavaScript 中,并计算 session 何时过期。

提前 5 分钟,我们会弹出一个模式对话框,显示“你还在吗?”带倒计时器。一旦计时器到达 0:00,我们就会将浏览器重定向到登录页面。

它是用最少的 JavaScript 实现的,用于执行时间和计时器计算,以及一个简单的 .ashx 处理程序,如果用户单击“我回来了!”,该处理程序将刷新 session 。在 session 到期之前的对话框上。这样,如果他们及时返回,他们就可以刷新 session 而无需任何导航。

关于asp.net-mvc - ASP.NET MVC session 过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com