Как остановить продление срока действия файлов cookie для вызовов AJAX?

Я установил ExpireTimeSpan на один день, но у меня есть служба уведомлений в пользовательском интерфейсе, которая отправляет вызов ajax каждые 5 минут, поэтому вызов ajax продлит время истечения срока действия, в результате чего система не выйдет из системы по истечении определенного периода времени, если пользователь в активном состоянии, как я могу решить эту проблему

        int expireTime = 1440; //one day

        app.UseCookieAuthentication(new CookieAuthenticationOptions
         {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login"),
            ExpireTimeSpan = TimeSpan.FromMinutes(expireTime),
            SlidingExpiration=true, 
            Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
                    validateInterval: TimeSpan.FromMinutes(30),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
        });

Я нашел это решение для ядра asp.net: https://medium.com/cacti-pins/conditional-set-sliding-expiration-time-on-authentication-cookies-in-asp-net-core-e70ffe7da49d но я использую .net4.5

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
625
1

Ответы 1

Я не думаю, что есть какое-то простое решение этой проблемы, но есть несколько способов, на которые вы могли бы обратить внимание.

Прежде всего, вы можете рассмотреть возможность использования WebSockets для службы уведомлений. В приложении на C# было бы разумно использовать SignalR. Это позволит вам открыть постоянное соединение между клиентом и сервером и включить принудительную отправку сервера, которая должна включать отправку cookie только при первоначальном подключении. Помните, что по умолчанию SignalR может перейти на длительный опрос, если другие параметры не поддерживаются в браузере, который по-прежнему страдает от той же проблемы.

В качестве альтернативы вы можете посмотреть замену вызова ajax на javascript fetch(). Это позволит вам опустить cookie при отправке запроса. Однако вам нужно будет сгенерировать альтернативный токен авторизации в вашем приложении и управлять им. Вам также может потребоваться переместить службу уведомлений в отдельное приложение, чтобы оно не использовало ту же схему аутентификации.

Я использовал этот фильтр перед действием, но я не знаю, как очистить файл cookie owin в общедоступном классе ответа DoNotExtendAuthenticationAttribute: ActionFilterAttribute {// как очистить файл cookie owin в ответе}

Muhammad Qurashi 29.08.2018 11:41

Я не уверен, что это поможет - аутентификация происходит дальше по конвейеру, все, что вам нужно сделать, это вывести пользователя из системы при следующем полном запросе.

ste-fu 29.08.2018 11:44

Другие вопросы по теме