gpt4 book ai didi

cookies - ASPNetCore : OpenId Cookies always show expires=1969-12-31 even with IsPersistent=true and ExpireTimeSpan set

转载 作者:行者123 更新时间:2023-12-02 15:17:24 26 4
gpt4 key购买 nike

使用ASPNETCORE OpenId身份验证中间件和Cookie中间件。我总是看到来自 OpenId 身份验证的 cookie 设置为在 1969 年 12 月 31 日到期(在 Chrome 调试器中)。我认为这意味着 cookie 是 session cookie;我想让它们成为持久性 cookie,这样系统就会提示用户登录的频率降低。因此,我按照其他帖子中的建议添加了 ExpireTimeSpan 和 IsPersistent=true,但我仍然看到我的 cookie 过期时间是 1969-12-31。

我做错了什么?

enter image description here

        services.AddAuthentication(options =>
{
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddAzureAd(options =>
{
Configuration.Bind("AzureAd", options);
})
.AddCookie(p =>
{
p.ExpireTimeSpan = TimeSpan.FromDays(30);
p.SlidingExpiration = true;
});

services.Configure<AuthenticationProperties>(props =>
{
props.IsPersistent = true;
props.ExpiresUtc = new DateTimeOffset(DateTime.Now, TimeSpan.FromDays(30));
});

最佳答案

在 aspnetcore 安全论坛上获得帮助,并得出以下解决方案:

        .AddCookie(p =>
{
p.SlidingExpiration = true;
p.Events.OnSigningIn = (context) =>
{
context.CookieOptions.Expires = DateTimeOffset.UtcNow.AddDays(30);
return Task.CompletedTask;
};
});

我还实现了一个注销页面(调用AuthenticationHttpContextExtensions.SignOutAsync(HttpContext)),以便用户更好地控制 cookie 生命周期。

关于cookies - ASPNetCore : OpenId Cookies always show expires=1969-12-31 even with IsPersistent=true and ExpireTimeSpan set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com