ASP. NET Core 2.x Session IdleTimeout не работает - PullRequest
0 голосов
/ 24 апреля 2020

Приложение построено с ASP. NET Core 2.x с использованием аутентификации cook ie и размещено в IIS.

Я пытаюсь установить срок действия cook ie на 120 минут и бездействовать Тайм-аут до 30 минут. ie. в то время как пользователь перемещается по страницам и отправляет формы, если пользователь покидает страницу / форму в течение 30 минут и пытается снова взаимодействовать со страницей или формой, это требует проверки (требует входа в систему) и должно быть возвращено к значению options.LoginPath.

Я попытался установить минимальное значение времени ожидания для простоя, равное 10 секундам, и просмотрел несколько других стековых потоков. Net и статьи Microsoft в поисках подходящего решения для этого.

Будет абсолютно признателен за любые предложения или другие вещи, которые я мог бы попытаться достичь бездействия.

Метод ConfigureServices:

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;

            }).AddCookie(options =>
                {
                    options.Cookie.HttpOnly = false;
                    options.Cookie.Expiration = TimeSpan.FromMinutes(120);
                    options.ExpireTimeSpan = TimeSpan.FromMinutes(120);
                    options.AccessDeniedPath = new PathString("/Error");
                    options.LoginPath = "/Account/Login"; // -> This decides which page to send users to 
                    //When cookie expires the user will be returned to the login page
                }
            );
            //services.AddMemoryCache();
            services.AddSession(options =>
            {
                options.IdleTimeout = TimeSpan.FromSeconds(10);
                options.Cookie.IsEssential = true;
            });

Метод настройки включает в себя:

app.UseAuthentication();
app.UseSession();
app.UseCookiePolicy();

РЕДАКТИРОВАТЬ 27/04 :

  1. Переход в IIS и пул приложений> Расширенные настройки> Обновлен тайм-аут простоя (минут) до 30 и для параметра Ping Enabled установлено значение False

  2. Открыл сайт и перешел на страницу, к которой имеет доступ только авторизованный человек, и оставил ее на 45 минут, затем попытался отправить HttpPost с помощью формы ssion на странице, и я ожидал, что сессия истекла (у меня есть страница SessionExpired и Error [catch unhandled]), хотя она успешно отправила сообщение.

  3. Также проверили, что 120 минутный повар ie срок действия истек, подтвердил, что он переходит на страницу SessionExpired, как и ожидалось

Есть предложения, что еще можно попробовать в IIS?

...