为什么 ASP.NET 记住我功能如此健忘?



我有一个使用 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 回收所需的时间。如果您有其他帐户连接到您的页面,为了防止其闲置,它可能会记住您更长时间。

相关内容

  • 没有找到相关文章

最新更新