Skip to content

Instantly share code, notes, and snippets.

@enorrmann
Last active May 27, 2019 18:41
Show Gist options
  • Save enorrmann/6e003a6d50478b8f17903b1913fd9c5b to your computer and use it in GitHub Desktop.
Save enorrmann/6e003a6d50478b8f17903b1913fd9c5b to your computer and use it in GitHub Desktop.
sesiones compartidas mediante shared session storage

lo primero sería crear un script sessionManager.js

(function () {

  if (!sessionStorage.length) {
      // Ask other tabs for session storage
      localStorage.setItem('getSessionStorage', Date.now());
  }

  window.addEventListener('storage', function (event) {

      if (event.key == 'getSessionStorage') {
          // Some tab asked for the sessionStorage -> send it

          localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage));
          localStorage.removeItem('sessionStorage');

      } else if (event.key == 'sessionStorage' && !sessionStorage.length) {
          // sessionStorage is empty -> fill it
          var data = JSON.parse(event.newValue), value;

          for (key in data) {
              sessionStorage.setItem(key, data[key]);
          }

      } else if (event.key == 'logout_gestion_educativa') {
          var auth_token_key = "me-auth-token";
          var me_token_key = "me_token";
          sessionStorage.removeItem(auth_token_key);
          sessionStorage.removeItem(me_token_key);
          localStorage.removeItem(auth_token_key);
          localStorage.removeItem(me_token_key);
      }
  });


})();

y en el index.html de cada app web lo primero seria ese script por ejemplo

    <body ng-app="app" style="background-color: #F4F4F4">
      <div class="app" ui-view ng-controller="AppCtrl">
          Iniciando ...
      </div>

      <script src="sessionManager.js"></script>
      <script src="scripts/app.min.js"></script>

  </body>

luego ya podemos utilizar sessionStorage entre tabs como si fuera localstorage y al salir de todas las pestañas se cierra la sesion ! pero pero para cerrar sesion en todas las pestañas hay que llamar explicitamente

  $window.localStorage.setItem('logout_gestion_educativa', Date.now());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment