如何在会话超时和重定向上提醒匿名用户

时间:2013-11-01 12:10:54

标签: c# jquery asp.net session

我有一个模拟测试页面(不需要身份验证),并将用户选择数据存储在会话变量中,并在结果页面上检索这些会话中的数据。会话超时设置为20分钟,滑动到期为真。有时用户闲置超过20分钟(默认超时)。我想仅在会话超时和重定向时显示警报。我打开使用javascript,jquery或asp.net c#。我见过类似的问题&回答尝试过Global.asax会话结束和jquery解决方案,但似乎没有一个对我有用。任何机构都可以根据我的要求给我一个例子吗?感谢

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这对我来说很完美

 override protected void OnInit(EventArgs e)
{
    base.OnInit(e);

    //It appears from testing that the Request and Response both share the
    // same cookie collection.  If I set a cookie myself in the Reponse, it is
    // also immediately visible to the Request collection.  This just means that
    // since the ASP.Net_SessionID is set in the Session HTTPModule (which
    // has already run), thatwe can't use our own code to see if the cookie was
    // actually sent by the agent with the request using the collection. Check if
    // the given page supports session or not (this tested as reliable indicator
    // if EnableSessionState is true), should not care about a page that does
    // not need session
    if (Context.Session != null)
    {
        //Tested and the IsNewSession is more advanced then simply checking if
        // a cookie is present, it does take into account a session timeout, because
        // I tested a timeout and it did show as a new session
        if (Session.IsNewSession)
        {
            // If it says it is a new session, but an existing cookie exists, then it must
            // have timed out (can't use the cookie collection because even on first
            // request it already contains the cookie (request and response
            // seem to share the collection)
            string szCookieHeader = Request.Headers["Cookie"];
            if ((null != szCookieHeader) && (szCookieHeader.IndexOf("ASP.NET_SessionId") >= 0))
                ScriptManager.RegisterStartupScript(this, this.GetType(), "Redirect", "alert('Your session has timed out due to inactivity. Please start the test again'); window.location.reload()", true);
        }
    }
}

答案 2 :(得分:0)

idleTime = 0;
$(document).ready(function () {

    var idleInterval = setInterval(timerIncrement, 5000); 


    $(this).mousemove(function (e) {
        idleTime = 0;
    });
    $(this).keypress(function (e) {
        idleTime = 0;
    });
});

function timerIncrement() {
    idleTime = idleTime + 1;
    if (idleTime >12 ) { //60 secs
        alert("session expired");
        window.location.href="a3.html";
    }
}

这种编码有助于在60secs之后的会话超时和重定向在提醒后的另一个页面