Как прекратить продление срока действия файлов cookie для вызовов ajax? - PullRequest
0 голосов
/ 29 августа 2018

Я установил 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/conditionally-set-sliding-expiration-time-on-authentication-cookies-in-asp-net-core-e70ffe7da49d но я использую .net4.5

1 Ответ

0 голосов
/ 29 августа 2018

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

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

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

...