当前位置: 首页 > article >正文

vue使用Pinia实现不同页面共享token

文章目录

  • 一、概述
  • 二、使用步骤
    • 安装pinia
    • 在vue应用实例中使用pinia
    • 在src/stores/token.js中定义store
    • 在组件中使用store
      • 登录成功后,将token保存pinia中
      • 向后端API发起请求时,携带从pinia中获取的token
  • 三、参考资料


一、概述

Pinia是Vue的专属状态管理库,它允许你跨组件或页面共享状态
在这里插入图片描述

二、使用步骤

安装pinia

npm install pinia

在vue应用实例中使用pinia

import { createPinia } from 'pinia'
const pinia = createPinia()
app.use(pinia)

在这里插入图片描述

在src/stores/token.js中定义store

import { defineStore } from "pinia";
import {ref} from 'vue';/*defineStore参数描述:第一个参数:给状态起名,具有唯一性第二个参数:函数,可以把定义该状态中拥有的内容defineStore返回值描述:返回的是一个函数,将来可以调用该函数,得到第二个参数中返回的内容
*/
export const useTokenStore = defineStore('token',()=>{//1.定义描述tokenconst token = ref('')//2.定义修改token的方法const setToken = (newToken)=>{token.value = newToken}//3.定义移除token的方法const removeToken = ()=>{token.value=''}return {token,setToken,removeToken}
}
)

在组件中使用store

登录成功后,将token保存pinia中

Login.vue

//导入token状态
import { useTokenStore } from '@/stores/token.js'
//调用useTokenStore得到状态
const tokenStore = useTokenStore();//保存tokentokenStore.setToken(result.data)

在这里插入图片描述

向后端API发起请求时,携带从pinia中获取的token

在article.js中导入@/stores/token.js, 在发起查询文章分类列表的时候把token通过请求头的形式携带给服务器

//导入@/stores/token.js
import { useTokenStore } from '@/stores/token'//文章分类列表查询
export const articleCategoryListService = () => {//获取token状态const tokenStore = useTokenStore()//通过请求头Authorization携带tokenreturn request.get('/category', { headers: { 'Authorization': tokenStore.token } })
}

三、参考资料

https://www.bilibili.com/video/BV14z4y1N7pg?spm_id_from=333.788.player.switch&vd_source=0467ab39cc5ec5940fee22a0e7797575&p=80

http://www.lryc.cn/news/2378756.html

相关文章:

  • 遨游科普:三防平板是什么?有什么功能?
  • spring MVC 至 springboot的发展流程,配置文件变化
  • 深入解析Spring Boot与JUnit 5的集成测试实践
  • AI全域智能监控系统重构商业清洁管理范式——从被动响应到主动预防的监控效能革命
  • 网络编程中的直接内存与零拷贝
  • 区块链基本理解
  • panda机械臂的正逆运动学分析与仿真
  • QT使用QXlsx读取excel表格中的图片
  • VulnHub | Breach - 1
  • CMake基础及操作笔记
  • 在Oracle到GreatSQL迁移中排序规则改变引发的乱码问题分析及解决
  • 开源物联网平台(OpenRemote)
  • JavaScript入门【3】面向对象
  • 软件安全检测报告:如何全面评估企业级办公软件安全性?
  • 区间dp(竞赛)
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类颜色常量QColorConstants)
  • 大模型技术演进与应用场景深度解析
  • 鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
  • python项目参考文献
  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GATT规范和ATT属性协议 + 电池电量服务例程
  • 2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题
  • 【记录】Windows|竖屏怎么调整分辨率使横竖双屏互动鼠标丝滑
  • 开源项目实战学习之YOLO11:12.2 ultralytics-models-sam-decoders.py源码分析
  • 数据结构*优先级队列(堆)
  • 汽车Wafer连接器:工业设备神经网络的隐形革命者
  • 微信小程序:封装表格组件并引用
  • 湖北理元理律师事务所:债务优化中的双维支持实践解析
  • uniapp在APP上如何使用websocket--详解
  • 计网| 网际控制报文协议(ICMP)
  • Conda 完全指南:从环境管理到工具集成