C# 当使用仅HTTP会话cookie时,客户端如何知道其会话何时将过期?

C# 当使用仅HTTP会话cookie时,客户端如何知道其会话何时将过期?,c#,angularjs,cookies,owin,session-cookies,C#,Angularjs,Cookies,Owin,Session Cookies,我的网站是一个AngularJS SPA,在Owin上运行Web API/SignalR后端。身份验证使用存储在浏览器本地存储器中的JSON Web令牌(JWT)进行管理 根据公司指令,我正在从本地存储中的JWT转移到具有滑动过期的仅HTTP同一站点会话cookie。一切都很好,除了一个障碍: 我的应用程序显示个人健康信息(PHI),因此我必须在会话到期后自动关闭应用程序。使用JWT,我可以检查“exp”声明,自动确定会话已过期,并从屏幕上删除PHI。但是使用仅HTTP的cookie,我无法访问

我的网站是一个AngularJS SPA,在Owin上运行Web API/SignalR后端。身份验证使用存储在浏览器本地存储器中的JSON Web令牌(JWT)进行管理

根据公司指令,我正在从本地存储中的JWT转移到具有滑动过期的仅HTTP同一站点会话cookie。一切都很好,除了一个障碍:

我的应用程序显示个人健康信息(PHI),因此我必须在会话到期后自动关闭应用程序。使用JWT,我可以检查“exp”声明,自动确定会话已过期,并从屏幕上删除PHI。但是使用仅HTTP的cookie,我无法访问令牌的任何部分

当我发布cookie时,我知道过期时间,并可以相应地通知浏览器。然而,当Owin刷新cookie时,浏览器将需要收到新到期的通知,我不知道如何做到这一点

我可以存储第二个cookie,它不仅是HTTP,而且只包含会话过期时间,但是每当我刷新主身份验证cookie时,我都必须刷新该cookie

如何告知浏览器会话何时将过期,并在过期更改时保持浏览器更新?当Owin刷新cookie时,如何将事件处理程序附加到

以下是我当前的cookie配置:

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    AuthenticationMode = AuthenticationMode.Active,
    CookieHttpOnly = true,
    ExpireTimeSpan = TimeSpan.FromHours(2),
    SlidingExpiration = true,
    CookieName = "Auth"                
});

我对Angular或Owin不太熟悉,但在处理受法律保护的教育数据时,我们通过勾选秒来解决它,然后在AJAX调用完成后在处理程序中重置

裸体版本如下所示:

var Countdown = {};
var Countdown.length = 3600 /* your session timeout here */;
var Countdown.seconds = Countdown.length;

var Countdown.tick = function() {
    Countdown.seconds--;
    if (Countdown.seconds == 0) {
         /* handle timeout */
    }
    /* any additional processing code here */
}

var Countdown.reset = function() { 
    Countdown.seconds = Countdown.length;
    /* any additional processing code here */
}

window.setInterval(Countdown.tick, 1000);

使用HTTP的非常可靠和简单的方法是对此进行endoint并进行检查,即每秒检查一次:

module.run(($interval) = > {
  $interval(() => {
      $http.get('/checkToken').then((result) => {
        if (result.data.expired) {...}
      }, (error) => ...)
  }, 1000);
})
checkToken
端点的服务器上,您可以执行所有需要的检查


<>为了更好的实时客户机-服务器交互,你可以考虑使用套接字,但这是另一个故事。

这不考虑cookie的更新。这不会导致AuthCookie被更新吗?这取决于你是如何实现它的。