jquery - Session Timeout 通过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 小时后运行一次。
解决方案
通常,您的共享文件夹中有一个“布局”视图,其中有页脚和菜单等。
你可以把这种逻辑放在那里。
它位于 Views > Shared > _LayoutPage.cshtml 或类似名称中。
尝试在该视图中执行您的脚本。
我不得不面对类似的事情,也许你可以试试这个,看看这是否适合你:
- 登录时创建一个会话变量。该变量的值应该是实际日期和时间 (DateTime.Now) 加上一小时(如果会话已过期,您需要再次验证)。
- 在您的母版页中,创建一个启动 ajax 请求的 SetInverval 函数(如您所见,每五分钟左右)以查看实际日期和时间是否小于您的会话变量(查看您是否需要验证您的会话) . 如果日期和时间大于您的会话变量,那么是时候再次检查您的会话是否仍然有效。
- 如果是,请重置您的会话变量时间并重复该过程,如果不是,请注销用户。
推荐阅读
- android - Java 8 的 AIDL (Android) 是否支持默认方法?
- python - Pandas Crosstab:传递值的形状是(1,3),索引暗示其他
- umbraco - 我在哪里可以找到 Umbraco 6 的文档?
- mysql - Mysql,如何选择具有较低值的行并将它们放入数组中?
- vb6 - 在数据网格视图中第二次删除一行不起作用
- jython - 如何根据值的 MD5 哈希在 Openrefine 中创建 UUID
- javascript - JavaScript 为 stringToColour 函数添加透明度选项
- c - 使用 pthread 和信号量的 C 语言中的读写器问题
- ios - Swift 5 - 导航页面
- php - 了解php错误处理和代码执行