У меня есть приложение, которое использует Asp.net Identity с скользящим истечением истины.Когда пользователь войдет в систему, я получу время истечения срока действия файла cookie с сервера, используя WEB API, и установлю время ожидания сеанса в переменной JavaScript. Запустился таймер java-скрипта.Если пользователь постоянно выполняет операции, всплывающее окно не будет отображаться.Если пользователь находится в режиме ожидания, перед показом всплывающего окна истечения сеанса я снова отправлю запрос на сервер и получу тайм-аут истечения срока действия cookie (иногда пользователи могут использовать систему без обновления, выполняя только запросы ajax). Я проверю при входе в системутайм-аут с текущим тайм-аутом, основанным на том, что я покажу всплывающее окно истечения срока действия.
Но когда я проверяю это, время cookie сбрасывается.Как я могу избежать сброса тайм-аута cookie по конкретному запросу?
[HttpGet]
public int GetCookieExpireTime()
{
var identity = User.Identity as ClaimsIdentity;
var claimType = "myExpireUtc";
if (identity != null && identity.HasClaim(c => c.Type == claimType))
{
var expireOn = identity.FindFirstValue(claimType);
DateTimeOffset currentUtc = DateTimeOffset.UtcNow;
DateTimeOffset? expireUtc = new DateTimeOffset(long.Parse(expireOn), TimeSpan.Zero);
var remaining = (expireUtc.Value - currentUtc).TotalSeconds;
return Convert.ToInt32(remaining);
}
return 0;
}
function ShowPendingTimeoutDialog() {
$.ajax({
type: "GET",
url: loc + '/Home/GetCookieExpireTime',
success: function (timeout) {
var warnSec = msecWarning / 1000;
//reset session timer if warn sec less than total time out time
if (warnSec < timeout) {
getCookieExpireTime();
}
//otherwise show session popup
else {
diag.dialog({
autoOpen: false,
title: "Session About to Expire",
closeText: "hide",
resizable: false,
draggable: false,
modal: true,
buttons: {
Continue: function () {
ResetTimeout();
}
},
create: function () {
$(this).closest('div.ui-dialog')
.find('.ui-dialog-titlebar-close')
.click(function (e) {
ResetTimeout();
});
$(this).closest(".ui-dialog")
.find(".ui-dialog-titlebar-close")
.html("<span class='ui-button-icon-primary ui-icon ui-icon-closethick'></span>");
}
});
UpdateTimeoutMessage();
diag.dialog("open");
}
},
failure: function () {
}
});
function ResetTimeout() {
diag.dialog("close");
$.ajax({
type: "GET",
url: loc + '/KeepSessionAlive.ashx',
success: function () {
getCookieExpireTime();
},
failure: function () {
}
});