uniapp存储携带过期时间

news/2025/2/11 11:59:12/文章来源:https://www.cnblogs.com/zx529/p/18709497

uniapp存储携带过期时间

项目中存储的过期时间一般会做两种校验。1.接口校验失败返回401。 2.本地存储的过期时间。本文介绍uniapp自定义封装存储,实现存储可携带过期时间。

详细代码

// 定义一小时对应的毫秒数,用于计算过期时间
const H = 60 * 60 * 1000;class Storage {constructor(prefix) {// 如果没有传入 prefix 参数,则使用配置文件中的 name 属性作为前缀this.prefix = prefix || "zStorage";}// 根据传入的键生成带有前缀的完整键名getKey(key) {return `__${this.prefix}_${key}__`;}// 设置存储数据,支持设置过期时间set(key, value, expire = 1) {const KEY = this.getKey(key);try {// 将数据和过期时间封装成一个对象并转换为 JSON 字符串const data = JSON.stringify({value,expire: !expire ? null : Date.now() + expire * H,});// 使用 uni-app 的同步存储方法将数据存储到本地uni.setStorageSync(KEY, data);} catch (error) {console.error("存储数据时出错:", error);}}// 获取存储的数据,会检查数据是否过期get(key) {const KEY = this.getKey(key);try {// 使用 uni-app 的同步获取方法从本地获取数据const val = uni.getStorageSync(KEY);if (!val) {return null;}// 将获取到的 JSON 字符串解析为对象const { value, expire } = JSON.parse(val);if (expire && expire < Date.now()) {// 若数据已过期,调用 remove 方法删除该数据this.remove(key);return null;}return value;} catch (error) {// 原来的存token可能不是JSON格式,所以这里需要兼容一下console.error("获取数据时出错:", error);return null;}}// 删除指定键的存储数据remove(key) {const KEY = this.getKey(key);try {// 使用 uni-app 的同步删除方法从本地删除数据uni.removeStorageSync(KEY);} catch (error) {console.error("删除数据时出错:", error);}}// 清空所有本地存储数据clear() {try {// 使用 uni-app 的同步清空方法清空本地存储uni.clearStorageSync();} catch (error) {console.error("清空存储时出错:", error);}}
}export default Storage;

注意事项:
1. 在存储时会先进行自定义key的编码处理,防止变量污染。
2. 在获取对应的json解析值时需要做异常处理,因为正在使用的版本中可能存储的不是json值,并且需要在异常条件中返回null,做兼容处理

使用示例

// 在main.js或全局进行挂载
import StorageExpire from "@/utils/storage";uni.$storage = new StorageExpire();
// xxx.vue 中使用
uni.$storage.set("token", token, 2);  // 单位是小时
const token = uni.$storage.get("token")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/882037.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

批量PDF文件转Word,免费!

今天推荐一款免费的PDF文件转换工具,它包括了PDF压缩、PDF转Word、PDF转Excel、提取PDF中图片等功能,下载地址在文末。 操作步骤 1、打开PDF转换工具,点击菜单PDF转Word,如下图2、添加需要转换的PDF文件,支持批量添加多个文件一起进行转换,如果一个目录下面的所有文件都需…

【博主亲测可用】科学计算软件:Wolfram Mathematica 14.2.0(附软件包及安装教程)

软件介绍 Wolfram Mathematica 14.2.0是一款功能全面且强大的数学计算与分析软件,它在大数据处理、人工智能集成、符号数组功能扩展、图形和可视化改进以及性能提升方面都有显著的增强。这些改进不仅使用户能够更高效地进行数据分析和科学计算,还极大地提升了用户体验。无论是…

硅基流动

使用硅基流动+Cherry ai部署 硅基流动网站:https://cloud.siliconflow.cn/i/OIItglHJ 邀请码:OIItglHJ 首次注册免费2000万Tokens Cherry ai网站:https://cherry-ai.com/download第一步,登入硅基流动网站,注册后 在左边选择api密钥,右上角选择新建api密钥新建后点击密钥…

Windows系统安装Ollama超简教程(附DeepSeek R1实战)

一、Ollama下载指引 官网地址:https://ollama.com/download选择Windows版本直接下载(推荐64位系统),安装包745MB左右,支持Win10/11系统。点击"Download for Windows"按钮即可开始下载。 二、安装过程详解双击下载的OllamaSetup.exe点击install之后,一路下一步就…

部署milvus2.5.3(standalone模式)

环境:os:Centos 7milvus:2.5.31.创建部署目录mkdir -p /home/middle/milvus2.准备docker-compose.yml配置文件内如如下: 我这里使用的是自己的镜像,需要根据自己环境情况进行修改[root@host135 milvus]# more docker-compose.yml version: 3.5services:etcd:container_name: m…

[书]清华大学DeepSeek:从入门到精通

通过网盘分享的文件:清华大学DeepSeek:从入门到精通.pdf等3个文件链接: https://pan.baidu.com/s/1y0-b3seTz7gMTTuPxYS7Vg?pwd=xd25 提取码: xd25一共三本资料

六. UML

UML 一. 事物 1.结构事物 结构事物是UML模型中的名词。它们通常是模型的静态部分,描述概念或物理元素。结构事物包括类(Class)、接口(Interface)、协作(Collaboration)、用例(Use Case)、主动类(Active Class)、构件(Component)、制品( Artifact)和结点(Node)。 各种结构事物的…

探索 QuestPDF:全平台支持、多功能、专业级的 .NET PDF 库

QuestPDF 是一个用于生成 PDF 文件的 .NET 库,它提供了一个简洁的 API 和灵活的布局选项,使得在 .NET 应用程序中创建 PDF 文件变得更加简单。 支持多平台,支持的功能有合并文档 附加文件 提取页面 加密/解密 扩展元数据 限制访问 针对 Web 进行优化 叠加层 / 底层安装 第一…

Java 中堆内存和栈内存上的数据分布和特点

说到 Java 中内存我们一般笼统地划分为堆内存(Heap)和栈内存(Stack),那么哪些数据被放置在堆内存?哪些数据被放置在栈内存?这些数据的分布有什么特点吗?博客:https://www.emanjusaka.com 博客园:https://www.cnblogs.com/emanjusaka 公众号:emanjusaka的编程栈by em…

AspNetCore 实战:三种流式响应机制详解

在现代Web应用中,实时数据传输和高效的数据流处理变得越来越重要。AspNetCore 提供了多种流式响应机制,以满足不同场景下的需求。 在使用ChatGpt,deepseek的适合有没有想过ai的逐字显示回答是怎么实现的,下面将介绍三种主要的流式响应来实现此功能。 Server-Sent Events (S…

java中反射-字节码和类加载器

多态的一个表现 子类类型赋值给父类 Father f1 = New Son() 调用子类方法报错。 调用父类方法OK。这个就是多态 一个对象能用什么方法,并不是取决于 它有什么方法。 而是取决于引用变量的类型(也就是取决于它声明的类型,Father类型) 它能够用的方法,一定是Father中的方法。 …

本地私有化部署DeepSeek,打造自己的大模型知识库

1简介 DeepSeek R1是基于MIT协议开源的大模型,意味着个人和企业可以免费使用,包括商业使用。 众所周知,我们可以在chat.deepseek.com上可以直接免费使用DeepSeek R1的聊天服务。但如果你自己开发的应用需要使用到其api的话,仍然是需要收费的,另外,如果你有机密信息并不想…