Заставить браузер удалить приготовление сеанса ie, когда серверная часть вернула неавторизованный - PullRequest
0 голосов
/ 05 августа 2020

Я использую. NET Core 3.1 в качестве серверной части и Angular 10 в качестве интерфейса. Они размещены вместе в docker. Когда пользователь входит в систему, бэкэнд возвращает повар ie (приготовление сеанса ie, если запомнить меня ложно, в противном случае устанавливается дата истечения срока действия), что является правильным поведением, НО наш бэкэнд иногда завершает сеанс из-за перезапуска или что угодно.

Моя проблема в том, что, поскольку у Cook ie есть дата истечения срока действия в браузере, Cook ie не очищается (например, если пользователь не закрыл браузер в сафари, я не 'не знаю о других браузерах), поэтому интерфейсная часть думает, что мы прошли проверку подлинности и хочет получить доступ к ресурсам сервера, который, как и ожидалось, возвращает неавторизованный HTTP-ответ. Есть ли способ заставить серверную часть возвращать просроченный Cook ie, чтобы браузер удалял сеансовый cook ie, или заставить браузер удалить Cook ie?

My startup.cs , где я настраиваю файлы cookie.

services.ConfigureApplicationCookie(_ => {
        _.Events.OnRedirectToLogin = context => {
          context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
          return Task.CompletedTask;
        };

        _.Events.OnRedirectToLogout = context => Task.CompletedTask;

        _.Events.OnRedirectToAccessDenied = context => {
          context.Response.StatusCode = (int) HttpStatusCode.Forbidden;
          return Task.CompletedTask;
        };

        _.Events.OnRedirectToReturnUrl = context => Task.CompletedTask;

        _.AccessDeniedPath = PathString.Empty;
        _.LoginPath = PathString.Empty;
        _.LogoutPath = PathString.Empty;
        _.ReturnUrlParameter = PathString.Empty;
        _.SlidingExpiration = true;
        _.ExpireTimeSpan = TimeSpan.FromMinutes(60.0D);

        _.Cookie.HttpOnly = false;
      });
...