Asp.net mvc “ASP.NET标识”;“记住我”;和cookie超时
在我的MVC Startup.Auth.cs文件中,有以下代码: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
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的值,但用户仍将登录
我希望这一点现在更清楚