我在网站上使用 C# 通过 FormsAuthenticationTicket 创建会话。
FormsAuthenticationTicket 的票证代码如下
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
model.UserName,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
admin.Role);
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket) { Expires = ticket.Expiration });
网站的每一部分都继承了 Site.Master,所以我想在这些行中添加一些东西到 Site.Master
$(document).ready(function() {
$(window).bind('mousemove mouseclick keydown mousewheel', idle);
});
function idle(e) {
if (window.idleTimeout) {
clearTimeout(window.idleTimeout);
}
<%= FormsIdentity identity = (FormsIdentity)HttpContext.Current.User.Identity; %>
<%= FormsAuthentication.RenewTicketIfOld(identity.Ticket); %>
window.idleTimeout = setTimeout(userIdle, 900000);
}
function userIdle() {
//either do stuff here or trigger the "idle" event
$(window).trigger('idle');
}
这不起作用。它不能使用 FormsIdentity 因为我不能“使用 System.Web.Security;” 这里。
是否有任何类似的逻辑可以用来在按键和鼠标事件等事件上不断刷新票证?
仅供参考:如果我去网站的其他部分,票不会过期,所以这不是问题。只有当人们使用 40 分钟完成表格然后尝试提交并失去所有进度时。当然我可以增加超时时间,但这不是我想要做的。