我有一个使用ASP.NET Identity 2.2的ASP.NET MVC 5项目。我使用Visual Studio中的“个人用户帐户”身份验证选项进行设置。我可以登录没有问题。如果我没有单击“记住我”并在登录后关闭浏览器,则重新打开时不会记住我的凭据。如果我确实单击“记住我”并在登录后关闭浏览器,则重新打开时会记住我的凭据。到目前为止,一切都很好。

当我单击“记住我”,登录,关闭浏览器,并使其长时间关闭时,问题就来了(我的测试使我认为它必须超过20分钟)。当我这样做时,我的凭证被忘记了,我必须再次登录。为什么会这样呢?

20分钟后,当我再次打开浏览器时,AspNet.ApplicationCookie cookie仍然存在,并且到期时间大约是两周。

我看过其他文章提到UseCookieAuthentication方法调用,因此在下面进行了介绍。我相信我正在为此使用默认值。

            app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            Provider = new CookieAuthenticationProvider
            {
                // Enables the application to validate the security stamp when the user logs in.
                // This is a security feature which is used when you change a password or add an external login to your account.
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });

最佳答案

20分钟是关于空闲的AppDomain回收需要多长时间。如果您有其他帐户连接到您的页面,则为了防止页面闲置,它可能会记住您更长的时间。

关于c# - 为什么ASP.NET记住我功能如此令人难忘?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48481712/

10-10 20:04