我正在尝试在Asp.Net中配置滑动过期cookie。我希望Cookie会在身份验证后5分钟出现在Google Chrome开发者工具cookie管理器中,但是它显示为“会话”,并且永远不会过期,直到单击退出按钮。如果关闭浏览器,它确实会消失。
下面是当前代码。该网站使用基于Kentor.AuthServices
的nuget程序包的基于Saml的单点登录身份验证(现在称为SustainSys.Saml2
,我们的版本落后)。
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/signin"),
CookieSecure = CookieSecureOption.SameAsRequest,
ExpireTimeSpan = TimeSpan.FromMinutes(5),
SlidingExpiration = true,
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = ctx => { },
OnResponseSignIn = context =>
{
context.Properties.AllowRefresh = true;
context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(5);
}
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
Kentor.AuthServices.Configuration.Options.GlobalEnableSha256XmlSignatures();
最近根据以下MSDN答案添加了OnResponseSignIn
块:
https://forums.asp.net/t/2121970.aspx?OWIN+Authentication+ExpireTimeSpan+not+working
我希望Cookie在30分钟的不活跃时间内过期。上面的代码设置为5,以便于测试。
答案 0 :(得分:0)
如this comment所示,“到期信息存储在受保护的cookie票证中”。过期时间应为take effect properly,即使您在开发人员工具中看不到该过期时间也是如此,因为它已在cookie自身内部进行了加密。