我的網站是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 關注
- 254 瀏覽
添加回答
舉報
0/150
提交
取消