Срок действия сессии - MVC Приложение, использующее ADFS - PullRequest
0 голосов
/ 08 января 2020

У меня есть asp. net MVC приложение (Angular FrontEnd), которое использует службы федерации Active Directory. Иногда, когда я открываю форму angular и нажимаю на кнопку отправить, POST-запрос (веб-API) не выполняется из-за тайм-аута ADFS, так как это длинная форма ввода и занимает более 60 минут (тайм-аут по умолчанию). Как обработать тайм-аут, пользователь заполняет всю форму, и из-за тайм-аута запрос не выполняется, и все введенные данные теряются.

Я попробовал несколько вещей, но, похоже, это не сработало. Я использую npm пакет bn-ng-idle, который вызывает API в фоновом режиме через каждые 30 минут, но, похоже, он не работает

this.bnIdle.startWatching(1500).subscribe((res:boolean) => {
      if(res) {
        this.dataHelper.Get(Global.Session_Extend).then(requestData => {
          console.log('Session_Extended '+ new Date().toLocaleDateString());
        });
      }
    })

Я пробовал этот вариант, но, похоже, не исправить проблему

 protected void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
        {
            var now = DateTime.UtcNow;
            SessionSecurityToken token = e.SessionToken;
            var httpContext = new HttpContextWrapper(this.Context);

            if (now > token.ValidTo
                && (httpContext.Request.IsAjaxRequest() || httpContext.Request.HttpMethod == "POST"))
            {
                var sessionAuthModule = (SessionAuthenticationModule)sender;
                e.SessionToken = sessionAuthModule.CreateSessionSecurityToken(token.ClaimsPrincipal,
                                                                              token.Context,
                                                                              now,
                                                                              now.AddMinutes(2),
                                                                              token.IsPersistent);
                e.ReissueCookie = true;
            }
        }
...