Я весь день царапал себе голову над этим. Я пытаюсь настроить "очень длинные" сеансы входа в MVC Identity 2.0.1. (30 дней).
Я использую следующий запуск файла cookie:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
SlidingExpiration = true,
ExpireTimeSpan = System.TimeSpan.FromDays(30),
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/My/Login"),
CookieName = "MyLoginCookie",
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Что в целом работает отлично. Печенье установлено через 30 дней, все выглядит хорошо.
Если я закрою браузер и вернусь после того, как прошло "validateInterval" (30 минут здесь), я все еще зарегистрирован, однако cookie теперь переиздается только как "сессия" (правильное имя файла cookie)! 30-дневное истечение закончилось.
Если я сейчас закрою браузер/снова заново, я больше не вошел в систему.
Я протестировал удаление "Провайдера", и все работает так, как ожидалось, я могу вернуться через несколько часов, и я все еще в порядке. Я читал, что лучше использовать повторную проверку штампа, поэтому не уверен, как действовать.