tag style change attribute javascript html5 storage

javascript - style - Vencimiento de la sesión.



title label html (3)

Puedes agregar algún tipo de mecanismo de expiración con algo como esto:

// get from session (if the value expired it is destroyed) function sessionGet(key) { let stringValue = window.sessionStorage.getItem(key) if (stringValue !== null) { let value = JSON.parse(stringValue) let expirationDate = new Date(value.expirationDate) if (expirationDate > new Date()) { return value.value } else { window.sessionStorage.removeItem(key) } } return null } // add into session function sessionSet(key, value, expirationInMin = 10) { let expirationDate = new Date(new Date().getTime() + (60000 * expirationInMin)) let newValue = { value: value, expirationDate: expirationDate.toISOString() } window.sessionStorage.setItem(key, JSON.stringify(newValue)) }

Estoy creando un formulario en el que tengo que almacenar los datos en sessionStorage de html5, no sé dónde caduca el sessionStorage . ¿Alguien puede decirme sobre el tiempo de expiración de la sessionStorage


Sé que esta pregunta es bastante antigua, pero publicaré mi respuesta si alguien más se topa con esto y lo encuentra útil. Puedes simular la caducidad de sessionStorage o locaStorage con algo como esto:

//In your login logic or whatever var expires = new Date(year, month, day, hours, minutes, seconds, milliseconds); var sessionObject = { expiresAt: expires, someOtherSessionData: { username: '''' } } sessionStorage.setItem(''sessionObject'', JSON.stringify(sessionObject));

También puede cifrar este objeto utilizando algo como http://bitwiseshiftleft.github.io/sjcl/ si no desea que este objeto de sesión esté en claro.

En cada carga de página, puede comprobar si el sessionStorage , o localStorage para el caso, está vencido:

$(document).ready(function(){ var currentDate = new Date(); var sessionObject = JSON.parse(sessionStorage.getItem(''sessionObject'')); var expirationDate = sessionObject.expiresAt; if(Date.parse(currentDate) < Date.parse(expirationDate)) { //normal application behaviour => session is not expired var someAppVariable = sessionObject.someOtherSessionData.etc; } else { //redirect users to login page or whatever logic you have in your app //and remove the sessionStorage because it will be set again by previous logic sessionStorage.removeItem(''sessionObject''); console.log(''session expired''); } });

Si no desea que los usuarios se mantengan conectados después de que la pestaña o el navegador se sessionStorage , use sessionStorage , de lo contrario, debe usar localStorage y manipularlo como desee.

Espero que alguien encuentre esto útil.


Vive y muere con la sesión del navegador y no se comparte entre pestañas. No caduca automáticamente. Así que si nunca cierras tu navegador nunca caduca.

Entonces, cuando la pestaña / ventana se cierra, los datos se pierden.

A cada área de almacenamiento de sesión se le permiten 5 MB de almacenamiento (en algunos navegadores 10 MB). Donde las cookies solo permiten 4kb (o más en algunos navegadores). Sin embargo, las cookies tienen una fecha de caducidad establecida.

Como escribió Christophe en los comentarios, el almacenamiento local nunca caduca. También se comparte en las pestañas y es del mismo tamaño que sessionstorage (5mb).