Asp.net mvc “ASP.NET标识”;“记住我”;和cookie超时

Asp.net mvc “ASP.NET标识”;“记住我”;和cookie超时,asp.net-mvc,asp.net-identity,Asp.net Mvc,Asp.net Identity,在我的MVC Startup.Auth.cs文件中,有以下代码: Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator .OnValidateIdentity<ApplicationUserManager, ApplicationUser, int

在我的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>()))
                }
Provider=新CookieAuthenticationProvider
{
OnValidateIdentity=SecurityStampValidator
.OnValidateId实体(
validateInterval:TimeSpan.FromMinutes(30),
regenerateIdentityCallback:(管理者,用户)=>
user.GenerateUserIdentityAsync(管理器),
getUserIdCallback:(id)=>(id.GetUserId())
}

如果我理解正确,登录cookie将在30分钟后过期。这意味着用户将被迫在30分钟后重新登录。如果这是正确的,那么如果登录cookie在30分钟后过期,让用户在登录页面上选择“记住我”有什么价值?

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

Identity framework创建的Cookie包含的数据通常足以在每次HTTP请求时使用,而无需返回数据库,因此,为了提高性能,不会在每次请求时与DB一起检查Cookie。但是,您可以通过更改数据库中的
SecurityStamp
使所有用户cookie无效。这个
SecurityStampValidator检查一下。但如果用户登录后30分钟内没有任何更改,则不会注销。仅更新cookie的值,但用户仍将登录


我希望这一点现在更清楚了。

您展示的代码片段与“记住我”没有多大关系
SecurityStampValidator
实际上是在检查所创建的cookie是否仍然对数据库中的用户记录有效。和
validateInterval:TimeSpan.FromMinutes(30)
定义根据数据库检查cookie的频率间隔

Identity framework创建的Cookie包含的数据通常足以在每次HTTP请求时使用,而无需返回数据库,因此,为了提高性能,不会在每次请求时与DB一起检查Cookie。但是,您可以通过更改数据库中的
SecurityStamp
使所有用户cookie无效。这个
SecurityStampValidator检查一下。但如果用户登录后30分钟内没有任何更改,则不会注销。仅更新cookie的值,但用户仍将登录

我希望这一点现在更清楚