Эта проблема существует только на онлайн-хосте, а не на локальном хосте.
На локальном хосте все в порядке, но когда я переключаюсь в онлайн-режим хост, который является хостом Windows с Plesk (я думаю, что это IIS, но я не уверен), пользователь выйдет из системы через 10–20 минут, независимо от того, что я использую — IsPersistent или нет (сохраняйте вход пользователя в систему) ).
Код: Выделить всё
builder.Services.AddAuthentication("MyAuth").AddCookie("MyAuth", options =>
{
options.Cookie.Name = "MyAuth";
options.LoginPath = "/login";
options.LogoutPath = "/logout";
options.ExpireTimeSpan = TimeSpan.FromDays(30);
});
List claims = new()
{
new Claim(ClaimTypes.NameIdentifier, user.ID.ToString()),
};
ClaimsIdentity identity = new(claims, "MyAuth");
ClaimsPrincipal principal = new(identity);
AuthenticationProperties properties = new() { IsPersistent = login.RememberMe };
await HttpContext.SignInAsync("MyAuth", principal, properties);
Что я пробовал:
- добавить параметры.SlidingExpiration = true; в AddAuthentication().AddCookie
- добавить builder.Services.Configure(o => o.ValidationInterval = TimeSpan.FromHours(10)); в program.cs
- ExpiresUtc для AuthenticationProperties.
Таинственный выход из системы на сервере IIS
Несмотря на все эти настройки, вы может возникнуть ситуация, когда пользователи
выходят из системы через несколько минут, например, через 20 минут. Скорее всего, вы не заметите
этого поведения локально при разработке приложения. Это
связано с некоторыми настройками IIS.
Чтобы исправить это поведение, сначала необходимо перейти к дополнительным настройкам
пула приложений. Вы увидите настройку под названием «Тайм-аут простоя
(минуты)», для которой необходимо установить значение 0. Его значение по умолчанию — 20 минут. Это означает
, что если в течение 20 минут не поступает новый запрос, рабочий процесс будет завершен
.
При перезапуске приложения или перезапуске рабочего процесса и при нажатии клавиш
связано с аутентификацией, хранящейся в памяти;
Токены аутентификации на основе файлов cookie будут недействительны, и пользователям потребуется
повторно войти в систему.
Поэтому, чтобы сохранить ключи постоянными, нам нужно установить еще один параметр в
расширенных настройках пула приложений; Для параметра «Загрузить профиль пользователя» должно быть установлено
значение True. Таким образом, ключи будут храниться в папке операционной системы.
(%LOCALAPPDATA%/ASP.NET/DataProtection-Keys)
Подробнее здесь: https://stackoverflow.com/questions/759 ... 20-minutes
Мобильная версия