所以在我的应用程序中,我将身份配置为:
services.ConfigureApplicationCookie(cfg =>
{
cfg.Cookie.Name = "application_ms_state";
cfg.Cookie.Expiration = TimeSpan.FromDays(1);
cfg.SlidingExpiration = true;
});
但到期时间差不多会在20分钟内发生。是否有人对此有所了解?
答案 0 :(得分:4)
经过几天的搜索,感谢this answer后面的人,我发现问题是,身份检查每30分钟(默认情况下,可配置),看看发出的身份验证是否有效,因此它会检查看到如果正在实施UserStore<>
的类正在实施IUserSecurityStampStore
(UserManager.SupportsUserSecurityStamp
)。由于我的实现IUserStroe
的MembershipService类没有实现IUserSecurityStampStore<>
,因此在30分钟的间隔后,我最终得到了无效的安全标记和一个== SignOut
的空主体。
检查此github issue以获取所提及的代码段的参考。
答案 1 :(得分:1)
阅读文档评论。 https://github.com/aspnet/Security/blob/a53bf093a7d86b35e019c80515c92d7626982325/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationOptions.cs#L147 ExpiresTimeSpan和Expiration控制不同的东西。 ExpiresTimeSpan是用于滑动到期的那个。