如何在asp.net mvc中重置会话超时时间

8

我希望在用户仍然活跃时重置会话超时时间。

  1. 在我的场景中,我的会话超时时间为20分钟。当会话时间在最后10秒到达时,我会显示一个对话框来确认用户是否要“保持登录状态?”。如果用户点击“是”,我想从第21分钟开始再次延长20分钟的会话时间,因为根据要求,我正在将用户会话时间保存在数据库表中。

  2. 我们可以为会话超时设置计时器吗?

所以,请帮助我,如何重置会话超时时间?


1
看看这个 http://www.pascarello.com/AjaxSessionTimer.aspx - Sanjay
你想要一个10分钟的超时时间,然后从第21分钟开始再加上20分钟的超时时间吗? - IEatBagels
我已编辑了我的问题! - Developer
1个回答

12

按照以下方式编写jQuery脚本:

 (document).ready(function () {


        $("#divdialog").dialog({
            autoOpen: false,

            resizable: false,
            modal: true,
            title: "Session Timeout",

            buttons: {
                Yes: function () {
                    $.ajax({
                        url: '/<your controller>/SessionTimeout', // Redirects to action method for every 20 minutes.

                        dataType: "json",
                        type: "GET",
                        error: function () {
                            alert(" An error occurred.");
                        },
                        success: function (data) {
                            $("#divdialog").dialog('close');
                            display("stop");

                        }
                    });
                },
                Logout: function () {
                    location.href = '/<your controller>/Logout';
                }
            }
        });


    });

    function myFunction() { // Fires every 20 minutes

        setInterval(function () {
            $("#divdialog").dialog('open');

        }, 1200000);
    }

并在您的控制器中添加操作方法,例如:

  public ActionResult SessionTimeout()
    {

        Session.Timeout = Session.Timeout + 20;

        return Json("",JsonRequestBehavior.AllowGet);
    }
希望上述技巧对你有所帮助。

您如何检查Session.Timeout的更改?即Session.Timeout变为15或10。我看到Session.Timeout有一个设置值。我正在计划设置一个间隔,但需要知道该时间是否与SessionTimeout相同。 - Winnemucca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接