【问题标题】:Logic related to sessions与会话相关的逻辑
【发布时间】:2014-01-27 12:00:52
【问题描述】:

我需要在会话到期时间还剩一分钟时向用户显示一个弹出窗口。假设会话到期时间为 5 分钟,我需要显示“您的会话将在下一分钟到期”的弹出窗口,如果您想继续,请单击此处,否则单击取消。所以,如果用户点击确定,时间应该会再次自动刷新,如果取消则不需要做任何事情。 为此,我在布局中的共享文件夹中做了类似的事情

var myVar = setInterval(function () { myTimer() }, 240000);
function myTimer() {
    var r = confirm("Session will expire in a minute. will you like to continue working?");
    if (r == true) {
        var _Id = $("#Id").val();

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "../Home/ResetUser",
            data: "{'User_ID':'" + _Id + "'}",
            dataType: "json",
            success: function (data) {
                if (data.Data == 'Done') {
                }
            },
            error: function (xhr) {
            }
        });
    }
    else {
        window.clearInterval(myVar);
    }

但我有一个问题,那就是我没有在所有页面中派生相同的布局。有些模块有不同的布局,有些页面不需要任何布局。所以,我需要让脚本针对不同的布局或不使用布局的页面以不同的方式运行。

如果我为不同的布局保留不同的脚本,它会正常工作吗? 另外假设我已经登录并设置了一个会话变量。现在时间设置为 5 分钟 并且用户来到没有使用我保留上述脚本的布局的主页。 我在此页面中添加了不同的脚本,脚本功能时间开始..

然后用户转到另一个页面然后会话时间会刷新? 我必须在那个页面上加载我上面的脚本函数吗? 我在做正确的事吗?

【问题讨论】:

  • 仅供参考,它被命名为“.NET”,而不是“dot net”。此外,您不需要在标题中使用它,因为它在标签中。
  • 您的脚本存在轻微的逻辑缺陷 - 如果用户在确认出现时离开键盘并在 10 分钟后返回 - 如果他们单击“是”继续工作,这将不会刷新他们的会话,因为他们已经超时了。不确定 JS 确认是这里的最佳选择 - 如果会话过期(例如重定向到登录),您可能还需要一些功能来采取行动。

标签: asp.net .net asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

您好,您可以在 _viewstart.cshtml 文件中编写脚本。

这将针对每个请求执行,而与您使用的布局页面无关

然后用户转到另一个页面然后会话时间会刷新?我必须在那个页面上加载我上面的脚本函数?

是的,当您用户刷新页面或再次请求服务器时,会话时间将被重置。

这是实现您的要求的一种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    相关资源
    最近更新 更多