Я знаю, что этот вопрос, кажется, уже был задан, однако это связано с ASP.NET Core, а не с ASP.NET 5.
Я пытаюсь выйти из системы, когда пользователь закрывает вкладку браузера; Я тестирую это с Chrome и Safari на MacOS.
В настоящее время, когда я вхожу в систему, и вкладка браузера закрывается и открывается заново, пользователь остается в системе.
Когда я захожу в систему, я устанавливаю AuthenticationProperties
IsPersistent
на false
. Тем не менее, пользователь остается в системе, когда вкладка браузера закрыта, как в Chrome, так и в Safari. (Браузер не закрыт, только вкладка).
Task task = HttpContext.SignInAsync(principal,
new AuthenticationProperties
{
IsPersistent = false
});
await task;
Согласно документам: постоянные файлы cookie
«Возможно, вы хотите, чтобы cookie сохранялся в сеансах браузера»
В приведенном выше случае я установил для IsPersistent значение false, и я предполагаю, что
cookie не должен переживать сеанс.
Как я понимаю, браузер не закрывает сеанс, а сервер закрывает, и это установлено на 10 секунд ниже.
Тем не менее, тестируя, как показано ниже, я не могу заставить пользователя выйти из системы.
- Войти в систему пользователя
- Подтвердите, что пользователь вошел в систему
- Закрыть вкладку браузера, (не закрывая браузер)
- Подождите более 10 секунд
- Откройте вкладку браузера и убедитесь, что пользователь не вошел в систему. Сбой
Это может быть неактуально ...
Starup.cs имеет это:
services.AddSession(options =>
{
// Set a short timeout for easy testing.
options.IdleTimeout = TimeSpan.FromSeconds(10);
options.Cookie.HttpOnly = true;
// Make the session cookie essential
options.Cookie.IsEssential = true;
});
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
{
options.LoginPath = "/auth/login";
options.AccessDeniedPath = "/auth/accessdenied";
});