SPA лицензирование при обновлении / закрытии браузера - PullRequest
0 голосов
/ 23 сентября 2018

Мы работаем над продуктом, в котором задействовано лицензирование.Он построен на ядре ReactionJS, Redux, Asp.net, а также использует Signalr для широковещательной рассылки сообщений клиенту.

Лицензия считается следующим:

  • Предопределенное значение для максимального числа браузеров.продукт может войти с.
  • Всякий раз, когда пользователь входит в браузер, будет использоваться лицензия.
  • Всякий раз, когда пользователь выходит из браузера, лицензия будет освобождена.

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

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

В componentWillmount мы использовали приведенную ниже логику (событие окна «beforeunload») для уменьшения количества лицензий.

    window.addEventListener("beforeunload", (event) => {
       this.props.deleteThisTabFromLocalStorage(); 
      if(tabsCountFromLocalStorage == 0){
        this.props.ReleaseLicence();
        this.props.Logout(); // This method contains redirection to login route. and deleting access tokens from localstorage.
       }

    });

Ожидается, что beforeunload будет вызываться только при закрытии браузера.Но когда вкладка обновляется, даже в этом случае вызывается событие beforeunload и приложение выходит из системы.

Может кто-нибудь подсказать, как различать события закрытия и обновления браузера?

...