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

前端接收客户端返回的token值使用pinia持久化保存token

1.下载pinia

npm install pinia

2.配置pinia

        在mian.js中 

                加入 import {creatPinia} from 'pinia'

                         const pinia = creatPinia()

                         app.use(pinia)

3.创建token.js文件 持久化存储token

/**
 * 导入状态管理的工具
 * 从 'pinia' 库中导入 defineStore 函数,用于创建状态存储
 * 从 'vue' 库中导入 ref 函数,用于创建响应式数据
 */

import { defineStore} from 'pinia'
import {ref}  from 'vue'


/*
*  @param {string} name - 状态存储的唯一名称,用于在应用中标识改存储
*  @param {Function} options - 一个函数 ,内部定义状态的内容和操作
*  @param {Object} [config] - 可选的配置对象,用于设置装填存储的行为
*  @param {boolean} [config.presist=false] - 是否持久化存储默认为false
*  @returns {Function} - 返回一个用于访问和操作状态存储的函数
*/

//defineStore 状态管理函数
// 参数1 名字,唯一性
// 参数2 函数 内部定义状态的内容
// 参数3 选项 是否持久化
// 如果不设置该值 浏览器刷新就会销毁
// 返回值 函数

export const userTokenStore = defineStore('token',() =>{
    // 管理状态内容
    // 1.响应式变量
    // 定义一个响应式变量token ,初始为空
    // 用于存储令牌的信息
    const token = ref('')

    // 2.定义函数修改token
    const setToken = (newToken) =>{
        token.value = newToken    
    }

    // 3.移除token
    const removeToken = () =>{
        token.value = ''
    }

    // 返回一个对象 包含状态和操作状态的函数
    return {
        token,
        setToken,
        removeToken
    };
    // 开启持久化
},{presist:true});

4. 在登录时数据交互保存token

//导入token状态管理工具
import { userTokenStore } from '@/stores/token'

// 获得对象
const tokenStore = userTokenStore()

// 登录相关接口
const login = async ()=>{
    let result = await userLoginServiceAPI(registerData.value)
    console.log(result)
    ElMessage.success(result.msg ? result.msg : "登录成功");
    // 将登录者的token值存放到pinia状态管理中
    // console.log(result.data)
    tokenStore.setToken(result.data)
    router.push('/'); // 登录成功后跳转到首页
}

5. 在axios库 发送请求的时候拦截 验证token
 

// 封装请求拦截器,每次请求都携带token值
import { userTokenStore } from '@/stores/token';

instance.interceptor.request.use(

    config =>{
        // 请求前配置token
        const tokenStore = userTokenStore();
        // 判断是否有token值
        if(tokenStore.token){
            // 获取token值配置在请求头协议中
            config.headers.Authorization = tokenStore.token;
        }
        // 返回配置信息 return config 会将配置对象返回到 Axios 的请求处理流程中,使得 Axios 可以// 使用这个配置对象来构建和发送实际的 HTTP 请求
        return config;
    },
    err =>{ Promise.reject(err)}

)

http://www.dtcms.com/a/109216.html

相关文章:

  • 元素定位-xpath
  • verl单机多卡与多机多卡使用经验总结
  • MCP的基本组成部分有哪些?MCP Servers服务器起到什么作用?
  • Jetpack Compose 状态管理指南:从基础到高级实践
  • 机器学习算法分类全景解析:从理论到工业实践(2025新版)
  • Electron读取本地Json文件(Win、Mac)
  • JSVMP逆向实战:原理分析与破解思路详解
  • day21 学习笔记
  • 【SPP】蓝牙链路控制(LC)在SPP中互操作性深度解析
  • Cron表达式
  • 什么是混杂模式?为什么 macvlan 依赖它
  • B2B2C商城系统开发:从规划到上线的全流程指南
  • 函数柯里化(Currying)介绍(一种将接受多个参数的函数转换为一系列接受单一参数的函数的技术)
  • 数字孪生在智慧城市中的前端呈现与 UI 设计思路
  • CentOS 7 镜像源失效解决方案(2025年)
  • 【Mysql】之索引详解
  • 游戏无法启动?XINPUT1_3.dll 丢失的终极解决方案
  • 国产替代新选择:CCLink IE与EtherCAT网关在制药行业的应用,配置详解
  • python之 “__init__.py” 文件
  • DeepSeek-R1 面试题汇总
  • SAP-ABAP:SAP ABAP UPDATE 语句用法详解
  • 如何像母语一样学习英语
  • VMware ESXi:企业级虚拟化平台详解
  • MySQL-- 函数(单行函数): 日期和时间函数
  • Linux内核TCP/IP协议栈中的设计模式:从面向对象到系统级软件的跨界实践
  • 数据结构——顺序表
  • 思维链(Chain-of-Thought, CoT)与强化学习区别
  • Java基础之反射的基本使用
  • linux命令-find指令
  • 卫星升空织密天网,卫星电话架起天地一体通信桥梁