我的 Angular 应用程序的静默刷新机制出现问题,因为身份服务器无法正确设置 cookie 过期时间。
成功登录后,将为身份服务器的域设置以下 cookie:
正如您在图片中看到的,“idsrv.session”cookie 具有到期“会话”。在我的旧 IdentityServer3 中,此 cookie 具有正确的到期日期,并且一切正常。
谁能帮我解决这个问题。我需要一种方法来为“idsrv.session”cookie 设置过期日期。
以下是我为实现目标而添加的当前配置/语句:
// Startup.cs - ConfigureServices()
services
.AddIdentityServer(options =>
{
options.EmitStaticAudienceClaim = true;
options.AccessTokenJwtType = "JWT";
options.Authentication.CookieLifetime = TimeSpan.FromDays(30);
})
services
.AddAuthentication("Cookies")
.AddCookie("Cookies", options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(30);
})
// AccountController.cs - Login()
await HttpContext.SignInAsync(isuser, new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTimeOffset.UtcNow.Add(TimeSpan.FromDays(30))
});
但此设置对“idsrv.session”cookie 没有影响。
我使用 .net core 3.1 和 IdentityServer4 4.0.4。
谢谢!!
解决方案:
就我而言,以下语句对我有帮助,即用户不会在 30 分钟后注销。过期“idsrv.session”cookie 虽然仍设置为会话,但在 30 分钟后不会删除。
services.Configure<SecurityStampValidatorOptions>(o => o.ValidationInterval = TimeSpan.FromDays(30));