【发布时间】:2024-01-16 23:04:02
【问题描述】:
我网站的安全检查显示会话(即登录)永不过期。我已经对自己进行了测试,我发现相同 - 我今天早上在 localhost 上打开了该站点,但我仍然从昨天开始登录。我一直认为它会在 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 user auto logoff after 20-30 min
这里的大多数问题似乎都在询问如何增加超时,但我需要将它从(看似)无限减少到 20 分钟左右:
【问题讨论】:
-
这两个,会话和身份是不相关的。这里的session与服务器端的会话状态容器有关。您的身份过期设置应在
UseCookieAuthentication中间件配置中。 -
@WiktorZychla - 我使用的是 .NET Core 3.1,所以 UseCookieAuthentication 不存在。
-
是的,配置已被移动,但仍然是两个不相关的配置。
标签: asp.net asp.net-core asp.net-identity session-state