asp.net是否有一种方法可以在cookie过期时触发类似会话结束的事件?

asp.net是否有一种方法可以在cookie过期时触发类似会话结束的事件?,asp.net,session,cookies,Asp.net,Session,Cookies,希望这不是一个太基本的问题。我想知道,就像会话过期时会触发会话结束事件一样,使用formsauthentication和cookie过期时是否有方法触发任何事件?或者是否有可能找出cookie何时过期(而不是发出新请求时),然后采取自定义操作 提前谢谢我想没有直接的方法知道这一点。我们通常在母版页上进行JavaScript攻击。请注意,您正在手动设置cookieExpiryTime var timeoutID, cookieExpiryTime = 20 * 60 * 60; //20

希望这不是一个太基本的问题。我想知道,就像会话过期时会触发会话结束事件一样,使用formsauthentication和cookie过期时是否有方法触发任何事件?或者是否有可能找出cookie何时过期(而不是发出新请求时),然后采取自定义操作


提前谢谢

我想没有直接的方法知道这一点。我们通常在母版页上进行JavaScript攻击。请注意,您正在手动设置cookieExpiryTime

var timeoutID,
    cookieExpiryTime = 20 * 60 * 60; //20 minutes
function HandleSessionExpiry() {
    timeoutID = window.setTimeout(function () {
        window.location.href = 'http://www.example.com/Login.aspx?action=logout';
    }, cookieExpiryTime);
}

window.onload = HandleSessionExpiry;
如果页面没有发出任何AJAX请求,但如果存在AJAX请求,那么这很好,我们需要在全局ajaxStart和ajaxStop上编写两个函数。(在此使用jQuery进行此操作)

我们在Login.aspx的页面上做了这个

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if(! String.IsNullOrEmpty(Request.QueryString["!action"]) 
            && Request.QueryString["!action"] == "logout")
        {
            Session.Abandon();
        }
    }
}

这是非常丑陋的黑客行为。最好是通过Ajax调用来知道会话是否已过期。@Aniket,我想看看这段代码。对我来说,setInterval似乎是唯一的方法。您是否建议每秒使用setTimeout调用进行ajax调用以检查会话是否已过期?我建议在启动实际回发之前扩展或挂接
\uuu doPostBack
以检查会话是否已过期。是的,我在render页上读到了另一篇关于编写此会话的文章。虽然在ajax调用上似乎不起作用,但这只是Inproc会话的问题。一些会话状态提供程序,基于Azure缓存的IIRC Microsoft Azure会话状态提供程序似乎允许滑动过期。
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if(! String.IsNullOrEmpty(Request.QueryString["!action"]) 
            && Request.QueryString["!action"] == "logout")
        {
            Session.Abandon();
        }
    }
}