vue如何获取 sessionStorage的值,获取token

embedded/2025/3/25 21:29:37/
javascript">
// 使用Axios发送请求并处理下载
import axios from 'axios';const handleDownload = () => {const params = {warehouseId: selectedWarehouseId.value};const apiUrl = `/api/materials/wmMatCheck/export-wmMatCheckDetail`;axios.get(apiUrl, {params,responseType: 'blob', // 接收二进制流headers: {'Content-Type': 'application/json', // 根据后端要求调整// 如果你需要携带token等信息'x-token': `Bearer ${getAccessTokenFromSessionStorage()}`}}).then(response => {const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });export2Excel(blob, '库存数据.xlsx');}).catch(error => {console.error('下载失败:', error);// 处理错误提示});
};// 从 sessionStorage 中获取 accessToken 的方法const getAccessTokenFromSessionStorage = () => {const tokenStr = sessionStorage.getItem('token');if (tokenStr) {try {const tokenObj = JSON.parse(tokenStr);return tokenObj.accessToken;} catch (error) {console.error('解析 token 时出错:', error);}}return null;
};

另外解释一下

sessionStorage 是浏览器提供的一种本地存储机制,用于在浏览器会话期间临时存储数据。它的特点和与 token 的关系如下:

1. sessionStorage 的特性

  • 生命周期:数据仅在当前浏览器会话(同一标签页 / 窗口)中有效。关闭标签页 / 窗口后,数据会被自动清除。
  • 作用域:每个标签页独立存储,不同标签页之间无法共享数据。
  • 容量:通常为 5-10MB,具体取决于浏览器。

2. token 变化是否会影响 sessionStorage 中的值?

  • 不会自动更新sessionStorage 中的数据是静态的,如果 token 在应用中被修改(例如通过接口返回新 token),必须手动更新 sessionStorage,否则它仍会保留旧值。
  • 示例

    javascript

    // 假设后端返回新 token
    const newToken = 'new_access_token';
    // 手动更新 sessionStorage 中的 token
    sessionStorage.setItem('token', JSON.stringify({ accessToken: newToken }));
    

3. 与 localStorage 的区别

特性sessionStoragelocalStorage
生命周期会话结束后自动清除除非手动删除,否则永久保存
作用域同一标签页 / 窗口同一浏览器同源窗口
数据更新不自动同步(需手动操作)自动同步(所有同源窗口)

4. 实际应用建议

  • token 更新时:如果通过接口获取到新 token,必须显式更新 sessionStorage 中的值,否则后续请求仍会使用旧 token
  • 避免缓存问题:在每次请求前,确保从 sessionStorage 中重新读取最新 token,而非直接使用内存中的旧值。
  • 存储格式:建议将 token 存储为 JSON 对象(如 { accessToken: 'xxx' }),方便后续扩展(例如存储过期时间)。

总结

sessionStorage 是临时存储,不会自动感知 token 的变化。若需更新 token,必须手动操作 sessionStorage.setItem

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

相关文章

算法模型从入门到起飞系列——背包问题(探索最大价值的掘金之旅)

文章目录 前言一、背包问题溯源(动态规划)1.1 动态规划的概念1.2 动态规划的基本步骤1.3 动态规划的实际应用 二、背包问题2.1 背包问题衍生2.2 0-1背包2.2.1 0-1背包描述2.2.2 0-1背包图解2.2.3 0-1背包代码刨析 2.3 完全背包2.3.1 完全背包描述2.3.2 完…

股票量化交易开发 Yfinance

以下是一段基于Python的股票量化分析代码,包含数据获取、技术指标计算、策略回测和可视化功能: python import yfinance as yfimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsfrom backtesting import Bac…

语法基础课1.1 变量、输入输出、表达式和顺序语句

AC&#xff1a;通过 WA&#xff1a;答案错误 TLE&#xff1a;超时 MLE&#xff1a;超内存 SF&#xff1a;数组越界 CE&#xff1a;编译错误 RE&#xff1a;运行时间出错——没出来结果 编写一个简单的C程序——手速练习 #include<cstdio> #include<iostream>using…

分享最近前端面试遇到的一些问题

前情提要&#xff08;分享个人情况&#xff0c;可以直接跳过&#xff09; 先说一下我的个人情况&#xff0c;我是2026届的&#xff0c;目前是在找前端实习。 3月初&#xff0c;从3月3日开始在Boss上投简历。 分享我的个人故事&#xff0c;不想看可以直接滑到下面&#xff0c;…

构建教育类小程序:核心功能详解

在知识更新速度日益加快的今天&#xff0c;开发一款高效、实用的教育类小程序成为了众多教育机构和个人的首选。为了打造一款优质的教育小程序&#xff0c;以下核心功能不可或缺&#xff1a; 一、全面且精细的学习功能 为了满足不同用户群体的学习需求&#xff0c;小程序应具…

使用 Spring Security的一些常用功能

在实际开发中&#xff0c;Spring Security 常常涉及一些常用的功能。以下是一些在开发中经常使用的 Spring Security 功能&#xff1a; 1. PasswordEncoder Bean&#xff08;密码加密&#xff09; 这段配置使用 BCryptPasswordEncoder 作为密码加密算法。它是 Spring Securit…

【MATLAB例程】基于TDOA定位(两步最小二乘)的三维轨迹定位和UKF滤波,TDOA的锚点可以自适应,附完整代码

该代码实现了一种融合TDOA(到达时间差)定位与无迹卡尔曼滤波(UKF) 的动态目标轨迹跟踪方案,适用于三维空间中的移动目标定位与滤波。使用两步最小二乘(粗解和细解)计算TDOA定位订阅专栏后,可查看完整代码 文章目录 运行结果源代码代码详解代码概述技术方法详解TDOA定位…

【论文阅读】MMedPO: 用临床感知多模态偏好优化调整医学视觉语言模型

MMedPO&#xff1a; 用临床感知多模态偏好优化调整医学视觉语言模型 1.背景2.核心问题&#xff1a;3.方法&#xff1a;3. 实验结果与优势4. 技术贡献与意义5.结论 MMedPO: Aligning Medical Vision-Language Models with Clinical-Aware Multimodal Preference Optimization M…