O LocalStorage sempre será armazenado no navegador, a menos que seja limpo manualmente. No entanto, em muitos casos, podemos precisar que o localStorage tenha um prazo de validade. Por exemplo, se salvarmos o token de autenticação do usuário no cliente, ele será válido dentro de 1 semana. , e se ultrapassar uma semana, faça login novamente, como cumprir esse requisito?
Você deve saber que o localStorage em si não fornece um mecanismo de expiração. Nesse caso, só podemos implementá-lo nós mesmos. Podemos adicionar esse método diretamente ao seu protótipo.
Storage.prototype.setExpire=(chave,valor,expirar) =>{ };Storage.setExpire(chave,valor,expirar);
Para expirar, o tempo deve ser registrado. Nossa ideia é registrar o tempo atual ao definir o valor e, em seguida, ao obter o valor, avaliar se a diferença entre o tempo atual e o anterior está dentro de um determinado intervalo. fora do intervalo, limpe o item atual e retorne nulo.
Para adicionar tempo a um valor, um formato deve ser definido
Storage.prototype.setExpire=(chave, valor, expirar) =>{ let obj={ dados:valor, hora:Date.now(), expirar:expire }; ;}
Inclui os três campos a seguir
Como o valor definido por localStorage não pode ser um objeto, o método JSON.stringify é usado aqui para convertê-lo em uma string e deve ser convertido novamente quando usado.
Então adicionamos um método para obter
Storage.prototype.getExpire= key =>{ let val =localStorage.getItem(key); if(!val){ return val } val =JSON.parse(val); >val.expire){ localStorage.removeItem(chave); return null } return val.data;}
Podemos testar primeiro
localStorage.setExpire(token,'xxxxxx',5000);window.setInterval(()=>{ console.log(localStorage.getExpire(token));},1000)
Essencialmente, nossa ideia não é limpar os itens vencidos regularmente, mas determinar se eles expiraram quando são obtidos e, em seguida, limpar os itens se estiverem vencidos.
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.