ASP.NET 身份、"Remember Me" 和 cookie 超时

ASP.NET Identity, "Remember Me" and cookie timeout

在我的 MVC Startup.Auth.cs 文件中,有这段代码:

Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity = SecurityStampValidator
                        .OnValidateIdentity<ApplicationUserManager, ApplicationUser, int>(
                            validateInterval: TimeSpan.FromMinutes(30),
                            regenerateIdentityCallback: (manager, user) =>
                                user.GenerateUserIdentityAsync(manager),
                            getUserIdCallback: (id) => (id.GetUserId<int>()))
                }

如果我理解正确的话,登录 cookie 将在 30 分钟后过期。这意味着用户将在 30 分钟内被迫重新登录。如果这是正确的,那么如果登录 cookie 在 30 分钟后过期,那么让用户 select "Remember Me" 出现在登录页面上的价值是多少?

您显示的代码片段与 "Remember Me" 没有太大关系。 SecurityStampValidator 实际上是在检查创建的 cookie 是否仍然对数据库中的用户记录有效。并且 validateInterval: TimeSpan.FromMinutes(30) 定义了根据数据库检查 cookie 的频率间隔。

身份框架创建的 Cookie 包含通常足以使用的数据,而无需在每次 HTTP 请求时返回数据库,因此为了提高性能,不会在每次请求时与数据库检查 cookie。但是您可以通过更改数据库中的 SecurityStamp 来使所有用户 cookie 无效。 SecurityStampValidator 对此进行检查。但如果用户登录后 30 分钟内没有任何变化,他们将不会被注销。只会更新cookie的值,但用户仍会登录。

我希望现在更清楚了。