如何向用户显示会话过期消息

How to show session expire message to User

本文关键字:会话 过期 消息 显示 用户      更新时间:2023-09-26

我们必须显示一个弹出窗口给用户,当他的会话是30分钟不活动后过期,例如,如果用户不使用应用程序从最后30分钟,然后显示他们的消息,你的会话已过期。

我们在我们的应用程序中使用MVC c#和AngularJs,并使用表单认证cookie。由于会话位于服务器端,我们必须在客户端对此进行检查,如果我们执行任何Ajax命中来检查会话,那么会话将被重新创建并且永远不会过期。

我怎样才能做到这一点?

有两种方法可以实现

1)使用ng-Idle,这里是观看演示和下载js文件的链接

var myApp = angular.module('myApp', ['ngIdle']); //inject ng-Idle in your app
myApp.config(['KeepaliveProvider', 'IdleProvider', function(KeepaliveProvider, IdleProvider) {
  IdleProvider.idle(30);
  IdleProvider.timeout(30);
  KeepaliveProvider.interval(10);//check every 10 mins..
}]);

2)使用一点JQuery &Js

我认为下面这个小模板会给你想要的结果,即方法二。

var idleTime = 0;
$(document).ready(function () {
    //Increment the idle time counter every minute.
    var idleInterval = setInterval(timerIncrement, 60000); // 1 minute
    //Zero the idle timer on mouse movement means some activity is going on .
    $(this).mousemove(function (e) {
        idleTime = 0;
    });
    $(this).keypress(function (e) {
        idleTime = 0;
    });
});
function timerIncrement() {
    idleTime = idleTime + 1;
    if (idleTime > 30) { // 30 minutes
        //call your custom pop up to show user that he is inactive for 30 mins
        window.location.reload();
    }
}

希望这些方法能让你了解如何达到你的结果。

你应该在页面中有一个标签,在页面加载上设置这个标签为会话的分钟数,例如:30:00分钟。

现在您将创建一个函数,每秒减少计时器,遵循这个链接,看看如何输出一个简单的JavaScript倒计时计时器的计时器代码?

现在,您必须在每次向服务器发出请求时重置计时器,当页面加载时,JavaScript代码将触发具有计时器的标签将自动重置,但当有Ajax请求时不会发生这种情况。为此,你需要编写以下代码拦截JQuery的Ajax调用并在其中重置计数器,这段代码应该在布局中或布局

中加载的JavaScript文件中
$( document ).ajaxSend(function() {
  //Reset the counter here
});