我的网站是AngularJS SPA,其Web API / SignalR后端在Owin上运行。身份验证通过存储在浏览器本地存储中的JSON Web令牌(JWT)进行管理。根据公司指令,我正在从本地存储中的JWT迁移到具有滑动到期期限的仅HTTP的同一站点会话cookie。一切都很好,除了一个障碍:我的应用程序显示个人健康信息(PHI),因此会话期满后,我必须自动关闭该应用程序。使用JWT,我可以检查“ exp”声明以自动确定会话已过期,并从屏幕上删除PHI。但是使用仅HTTP的cookie,我无法访问令牌的任何部分。当我发布Cookie时,我知道其有效期并可以相应地通知浏览器。但是,当Owin刷新cookie时,需要通知浏览器新的过期时间,我不确定该怎么做。我可以存储第二个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" });
2 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
我不是很熟悉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);
- 2 回答
- 0 关注
- 209 浏览
添加回答
举报
0/150
提交
取消