asp.net 有没有办法在 cookie 过期时触发 Session_End 之类的事件?
asp.net is there a way to trigger Session_End like event when cookie expires?
希望这不是一个太基础的问题。我想知道就像会话过期时触发 Session_end 事件一样,有没有办法在使用 formsauthentication 和 cookie 过期时触发任何事件?或者是否有可能找出 cookie 何时过期(而不是在发出新请求时)然后采取自定义操作?
提前致谢
我认为没有直接的方法可以知道这一点。我们曾经在母版页上执行此 JavaScript hack。请注意手动设置 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)
$(document).ajaxStart(function () {
window.clearTimeout(timeoutID);
});
$(document).ajaxStop(function () {
HandleSessionExpiry();
});
Login.aspx 的 Page_Load 我们做到了。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if(! String.IsNullOrEmpty(Request.QueryString["!action"])
&& Request.QueryString["!action"] == "logout")
{
Session.Abandon();
}
}
}
希望这不是一个太基础的问题。我想知道就像会话过期时触发 Session_end 事件一样,有没有办法在使用 formsauthentication 和 cookie 过期时触发任何事件?或者是否有可能找出 cookie 何时过期(而不是在发出新请求时)然后采取自定义操作?
提前致谢
我认为没有直接的方法可以知道这一点。我们曾经在母版页上执行此 JavaScript hack。请注意手动设置 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)
$(document).ajaxStart(function () {
window.clearTimeout(timeoutID);
});
$(document).ajaxStop(function () {
HandleSessionExpiry();
});
Login.aspx 的 Page_Load 我们做到了。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if(! String.IsNullOrEmpty(Request.QueryString["!action"])
&& Request.QueryString["!action"] == "logout")
{
Session.Abandon();
}
}
}