通过 jquery 全局绑定函数以获得会话超时



我在核心中有一个操作方法 asp.net 该方法返回会话是否已过期。我希望函数每 1 小时运行一次。但是我怎样才能永久绑定它呢?

如果我将其绑定在特定页面上,它将不起作用,因为用户可能会导航到其他页面。

我尝试将其绑定到窗口,但也没有用。在窗口加载时绑定它不起作用。

public IActionResult IsSessionActive()
{
ResponseModel response = new ResponseModel();
if (HttpContext.Session.GetInt32("CompanyId") == null)
{
response.Data = false;
response.isError = true;
response.Message = loc["SessionTimedOut"].Value;
} 
else
{
response.Data = false;
}
return Json(response);
}
window.setInterval(IsSessionActive(), 3600000); // jquery code

函数 IsSessionActive 应通过 jquery 全局绑定到 Web 应用程序,并在每 1 小时运行一次。

通常,您的共享文件夹中会有一个"布局"视图,其中有页脚和菜单等。

你可以把这种逻辑放在那里。

它位于视图>共享> _LayoutPage.cshtml 或一些类似的名称中。

尝试在该视图中执行脚本。

我不得不面对类似的事情,也许你可以试试这个,看看这是否适合你:

  • 登录时创建会话变量。该变量的值应为实际日期和时间 (DateTime.Now( 加上一小时(您需要再次验证会话是否已过期的时间(。
  • 在母版页中,创建一个 SetInverval 函数,该函数启动一个 ajax 请求(如您所见,每五分钟左右一次(,以查看实际日期和时间是否小于会话变量(以查看是否需要验证会话(。如果日期和时间大于会话变量,则是时候再次检查会话是否仍然有效了。
  • 如果是,请
  • 重置会话可变时间并重复该过程,如果没有,请注销用户。

最新更新