javascript - 如何在会话存储中设置令牌一小时?
问题描述
我在这里token
存储了这个令牌sessionStorage
(见下面的代码)。现在我想在 60 分钟后自动在 sessionStorage 中设置这个令牌 60 分钟我想使这个令牌过期,这怎么可能?
let value = 'eyJpc3MiOiJodHRwczovL2FwaS5kYXRhdmlwZXIuaW8vYXBpL2xvZ2l
uIiwiaWF0IjoxNTY1Njc4NjczLCJleHAiOjE1NjU2OD';
sessionStorage.setItem('token', value);
解决方案
按照设计,会话存储预计不会跨会话持续存在。
sessionStorage 类似于 localStorage;唯一的区别是虽然存储在 localStorage 中的数据没有过期时间,但存储在 sessionStorage 中的数据会在页面会话结束时被清除。只要浏览器打开并在页面重新加载和恢复后仍然存在,页面会话就会持续。
如果您仍然希望会话存储中的任何存储值在会话到期之前到期,则需要将到期时间保存在值中并通过您自己的函数检查是否到期。
这是一个简化的示例:
sessionStorage.setItem('key', JSON.stringify({exp: new Date() + 5, data: data})); //A value meant to expire in 5 minutes
function checkExpired() {
var exp = sessionStorage.getITem('exp');
if (exp > new Date())
console.log('expired');
}
这个例子同样很好地演示了该方法。如果要根据存储的值做出关键决策,则必须采取安全预防措施。
推荐阅读
- python - 尝试在 python 中使用 sshtunnel
- java - JsonMappingException:尝试反序列化 JSON 文件时不适用
- php - 在 Aliseeks api 上进行身份验证的 cURL post api 调用
- java - @Autowire 如何在不使用 @Bean 注解的情况下获取 spring bean
- c# - 404 方法未找到数据
- javascript - 文件的同源策略 - iFrame 的问题
- c# - Visual Studio Code C# 调试问题
- c# - 使用 TypenameHandling.All 和 List 进行模式验证
- spring-boot - “如何改变休息反应”
- event-handling - 将自定义 UIKit 控件中的自定义 UIKit 事件暴露给 SwiftUI