如何在asp.net mvc中处理会话

时间:2013-02-09 01:54:18

标签: c# asp.net asp.net-mvc asp.net-mvc-3 session

如何在Asp.Net MVC中执行此操作?

  • 活动计时器:当用户在页面上导航时(意味着执行调用ActionResult的操作),计时器将重置。
  • 当用户在超过15分钟内没有进行任何活动时,系统会提示他并询问“你还在吗?” (是/ LogOut),如果他点击是,那么活动计时器将返回零,并再次开始计数。
  • 此活动计时器必须是每个用户唯一的,并且必须在注销时销毁。
请PLEASE!耐心等待我!我不知道怎么回事。

我发布了这个question,但我没有得到解决这个问题的任何答案。所以我打算从一开始就这样做,我需要一些帮助/指导来正确地做到这一点 任何参考链接或教程将非常感谢!

1 个答案:

答案 0 :(得分:1)

我会在客户端处理此问题。创建一个对象来封装功能。

类似的东西:

var UserInactivityMonitor = UserInactivityMonitor || {};
UserInactivityMonitor = (function (module) {
    var inactivityIndex;
    var promptIndex;
    var timer;

    module.startInactivityMonitor = function () {
        module.timerTick();
    };

    module.timerTick = function () {
        inactivityIndex--;
        if (inactivityIndex === 0) {
            module.fireInactivityAlert();
        }

        if (inactivityIndex === promptIndex) {
            module.fireIdlePrompt();
        }

        timer = setTimeout(module.timerTick, 1000);
    };

    module.fireIdlePrompt = function () {
        var response = confirm('are you stil there?');
        if (response === true) {
            module.resetInactivityIndex();
        }
    };

    module.resetInactivityIndex = function () {
        inactivityIndex = 15;
        promptIndex = 5;
    };

    module.fireInactivityAlert = function () {
        alert('Inactivity alert!');
    };

    module.initialize = function () {
        module.resetInactivityIndex();
        module.startInactivityMonitor();
    };

    return module;
})(UserInactivityMonitor || {});

将inactivityIndex设置为在不活动事件触发之前将经过的秒数。将promptIndex设置为提示用户是否仍然存在时剩余的秒数。上面的代码将不活动超时设置为15秒,并在剩余的5秒标记处调用空闲提示。

在页面加载时启动不活动计时器:

$(function () {
    UserInactivityMonitor.initialize();
});

在任何AJAX请求中,重置计数器:

 $("#fooButton").on('click', function () {
        $.ajax(
            {
                url: $("#buttonClickPostUrl").val(),
                data: {
                    someData: 'data'
                },
                type: 'POST',
                complete: function () {
                    UserInactivityMonitor.resetInactivityIndex();
                }
            });
    });

如果服务器正在维护会话状态,那么您将需要向服务器发出请求以终止会话,并可选择将浏览器定向到该事件的相应页面。您可以在fireInactivityAlert()函数中执行此操作。