【发布时间】:2018-10-12 18:51:44
【问题描述】:
我的网站是一个 AngularJS SPA,其 Web API/SignalR 后端在 Owin 上运行。身份验证通过存储在浏览器本地存储中的 JSON Web 令牌 (JWT) 进行管理。
根据公司指令,我将从本地存储中的 JWT 转移到具有滑动到期时间的仅 HTTP 同站点会话 cookie。一切都很好,除了一个障碍:
我的应用程序显示个人健康信息 (PHI),因此我必须在会话到期后立即自动关闭应用程序。使用 JWT,我可以检查“exp”声明以自动确定会话已过期并从屏幕上删除 PHI。但是使用仅限 HTTP 的 cookie,我无法访问令牌的任何部分。
当我发出 cookie 时,我知道过期时间并可以相应地通知浏览器。但是,当 Owin 刷新 cookie 时,需要通知浏览器新的过期时间,我不知道该怎么做。
我可以存储第二个不是仅 HTTP 的 cookie,它只包含会话到期时间,但是每当我刷新我的主要身份验证 cookie 时,我都必须刷新那个 cookie。
我如何告诉浏览器会话何时到期,并在到期更改时保持浏览器更新?如何在 Owin 刷新 cookie 时附加事件处理程序?
这是我当前的 cookie 配置:
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationMode = AuthenticationMode.Active,
CookieHttpOnly = true,
ExpireTimeSpan = TimeSpan.FromHours(2),
SlidingExpiration = true,
CookieName = "Auth"
});
【问题讨论】:
标签: c# angularjs cookies owin session-cookies