ASP.NET Core 3.1 / Identity 会话永不过期。如何让它在滑动到期时到期?

2024-04-13

我的网站的安全检查显示会话(即登录)永远不会过期。我已经测试过自己,发现了同样的情况 - 今天早上我在本地主机上打开了该网站,但我仍然从昨天开始登录。我一直认为它会在 20 分钟后过期,就像在 .NET Framework 应用程序中一样。

我使用 ASP.NET Core Identity 脚手架,除了实现两因素身份验证之外,只需进行很少的更改。

在我的 Startup.cs 中,我有以下代码来添加会话支持:

services.AddSession(options =>
{
    options.Cookie.IsEssential = true;
    options.IdleTimeout = TimeSpan.FromSeconds(10);
    options.Cookie.Expiration = TimeSpan.FromSeconds(10);
});

我在 IdentityOptions 下看不到任何与登录超时相关的代码。

在登录页面上,我专门将任何“记住我”类型的函数硬编码为 false:

await _signInManager.SignInWithClaimsAsync(user, isPersistent: false, claims);

如何让我的登录会话在大约 20 分钟后过期,就像在 .NET Framework 中自动过期一样?

我基本上有与这个问题中提到的问题完全相反的问题:asp.net-core2.0 用户在 20-30 分钟后自动注销 https://stackoverflow.com/questions/45825684/asp-net-core2-0-user-auto-logoff-after-20-30-min

这里的大多数问题似乎都在询问如何增加超时,但我需要将其从(看似)无限减少到 20 分钟左右:


我发现我必须在Startup.cs中添加以下代码来设置ApplicationCookie过期时间:

services.ConfigureApplicationCookie(options => options.ExpireTimeSpan = TimeSpan.FromMinutes(20));

我首先使用 .FromSeconds(10) 进行了测试,10 秒后我就注销了。

该函数的文档在这里:https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-3.1#cookie-settings https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity-configuration?view=aspnetcore-3.1#cookie-settings

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET Core 3.1 / Identity 会话永不过期。如何让它在滑动到期时到期? 的相关文章

随机推荐