首页 > 其他分享 >Cookies,Session,Storage 封装方法,包含过期时间

Cookies,Session,Storage 封装方法,包含过期时间

时间:2025-01-23 11:33:28浏览次数:1  
标签:function Cookies return Storage Session export key data

import Cookies from 'js-cookie'
import router from '@/router'

const TokenKey = 'token'
export function getToken() {
    return Cookies.get(TokenKey) ?? ''
}

export function setToken(token: string) {
    return Cookies.set(TokenKey, token)
}

export function removeToken() {
    return Cookies.remove(TokenKey)
}
export function setCookie(key:any,val: string) {
    return Cookies.set(key, val)
}
export function getCookie(key:any) {
    return Cookies.get(key) ?? ''
}



export function removeCookie(key) {
    return Cookies.remove(key)
}

export function setSession(key: any, value: any) {
    // return Cookies.set(key, value)
    window.sessionStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))

}
export function getSession(key, exp = 24*60*60*1000) {
    // 获取数据
    let data = window.sessionStorage.getItem(key)

    if (!data) return null
    let dataObj = JSON.parse(data)
    console.log('exp', new Date().getTime() - dataObj.time > exp)
    // 与过期时间比较
    if (new Date().getTime() - dataObj.time > exp) {
        // 过期删除返回null
        removeSession(key)
        return null
    } else {
        return dataObj.data
    }
}

export function removeSession(key: any) {
    window.sessionStorage.removeItem(key)
}

export function setStorage (key, value) {
    window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))
}

export function getStorage (key, exp = 86400000) {
    // 获取数据
    let data = window.localStorage.getItem(key)
    if (!data) return null
    let dataObj = JSON.parse(data)
    // 与过期时间比较
    if (new Date().getTime() - dataObj.time > exp) {
        // 过期删除返回null
        removeStorage(key)
        router.push('/login')
        return null
    } else {
        return dataObj.data
    }
}
export function removeStorage (key) {
    window.localStorage.removeItem(key)
}

  

标签:function,Cookies,return,Storage,Session,export,key,data
From: https://www.cnblogs.com/gqx-html/p/18687416

相关文章

  • high performance object storage | MinIO vs. Ceph
    -[MinIO|Codeanddownloadstocreatehighperformanceobjectstorage](https://min.io/download)-[Ceph.io—Code](https://ceph.io/en/developers/code/)-[Indexof/tarballs/](https://download.ceph.com/tarballs/)-[GitHub-ceph/ceph:Cephisadistribut......
  • sessionStorage储存对象
    sessionStorage和localStoragesessionStorage(会话存储):暂时储存,浏览器关闭之后会清除localStorage(本地存储):本地储存,浏览器关闭之后依旧不会清除,只能人为删除平时储存的话建议使用sessionStorage;sessionStorage存储一个对象letobj={name:'zs',age:'18'}sessio......
  • Pinia 替代 localStorage 的常规使用场景
    在现代Vue工程化项目中,通常推荐使用Pinia(或Vuex)来管理状态,而不是直接使用localStorage。我来解释下具体原因和使用方式:1、为什么使用Pinia替代localStorage://使用Pinia的优势:-状态集中管理,更容易维护-支持响应式-支持开发工具调试-支持TypeScript-可以配......
  • Cookie和Session
    会话:有状态会话:客户端知道发起请求的是谁无状态会话:不知道发起请求的是谁只知道有请求http是无状态请求保存会话信息的两种技术:可以通过Cookie和Session储存会话信息cookie:客户端技术   信心存在客户端由服务器创建,通过响应发送给客户端,并且保存在客户浏览器的......
  • IBM Storage - 支持AI应用场景的数据存储软硬件解决方案
    概述    为了解决数据和工作负载在各地分散的现状,需要实现对存储在分布式文件和对象存储系统中的大量非结构化数据的高速访问。IBMStorage利用人工智能(AI)、机器学习(ML)和高级分析手段,对数据存储基础架构进行现代化改造。IBMStorage不仅仅是一套存储产品和解决方案,其......
  • 使用js写一个方法监听localStorage的变化
    在前端开发中,监听localStorage的变化可以通过window对象上的storage事件来实现。这个事件会在同一来源的其他页面修改了localStorage时触发。如果你需要在当前页面也监听到变化,你可以封装一个方法来设置和监听localStorage。以下是一个简单的示例,展示了如何封装一个方法......
  • 《深入理解Mybatis原理》MyBatis的sqlSession执行流程
    sqlSessionFactory与SqlSession正如其名,Sqlsession对应着一次数据库会话。由于数据库会话不是永久的,因此Sqlsession的生命周期也不应该是永久的,相反,在你每次访问数据库时都需要创建它(当然并不是说在Sqlsession里只能执行一次sql,你可以执行多次,当一旦关闭了Sqlsession就需要重新......
  • 请问sessionStrorage多久会过期?
    sessionStorage的过期时间并不是基于一个固定的时长,而是与浏览器窗口或标签页的生命周期紧密相关。以下是对sessionStorage过期时间的详细解释:生命周期:sessionStorage的有效期是和存储数据脚本所在的最顶层的窗口或者是浏览器标签页一样的。一旦这个窗口或者标签页被永久关闭(即......
  • 浏览器本地存储 WebStorage包括localstorage sessionstorage
    一、概念浏览器端通过sessionstorage和localstorage属性来实现本地存储 二、相关API//设置,keyvalue,key若存在,则则更新value,value为字符串,需要使用JSONlocalStorage.setItem('msg','Hello')sessionStorage.setItem('msg','Hello')//获取value,根据key,value是字符串,......
  • 三个域对象->Request域、Session域、Application域
    Servlet中的三个域对象请求域:request会话域:session应用域:application三个域都有以下三个方法://向域中存储数据voidsetAttribute(Stringname,Objectobj);​//从域中读取数据ObjectgetAttribute(Stringname);​//删除域中的数据voidremoveAttribute(Strin......