ASP.NET身份,"记住我"和cookie超时

时间:2015-11-06 16:16:52

标签: asp.net-mvc asp.net-identity

在我的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分钟内重新登录。如果这是正确的,那么让用户选择&#34;记住我&#34;如果登录cookie在30分钟后到期,则在登录页面上?

1 个答案:

答案 0 :(得分:0)

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

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

我希望现在更清楚了。