繁体   English   中英

如何在ASP.NET MVC中处理会话

[英]How to handle session in asp.net mvc

如何在Asp.Net MVC中做到这一点?

  • 活动计时器:当用户在页面上导航(意味着做一些调用ActionResult )时,计时器将重置。
  • 如果用户超过15分钟未执行任何活动,则会提示他并询问“您还在吗?” (是/注销),如果他单击是,则活动计时器将返回零,然后重新开始计数。
  • 该活动计时器对于每个用户必须是唯一的,并且必须在注销时销毁。

求求你了! 对我耐心! 我不知道该怎么做。

我已经发布了这个问题,但是没有得到解决该问题的答案。 所以我计划从一开始就做,而且我需要一些帮助/指南才能正确地做。
任何参考链接或教程将不胜感激!

我会在客户端上处理。 创建一个对象以封装功能。

就像是:

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()函数中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM