vue中token的处理

传统的token处理

        直接存储到localstorage或者sessionStorage中,缺点:

        1 数据并非响应式,需要进行特殊处理

        2 存取麻烦,在存储对象数组类型的时候要用JSON转换为JSON类型的字符串

VUEX的存储方法

        通过mutations定义的函数将数据存储到Vuex的state中

        缺点: 数据存储的有效时间短,刷新页面数据消失

项目中的token处理方法

        两者结合,加上封装本地存储模块

本地存储模块:

// 封装本地存储模块

// 存储数据
export const setItem = (key, val) => {
  // 对象或数组要进行转换
  if (typeof val === 'object') {
    val = JSON.stringify(val)
  }
  localStorage.setItem(key, val)
}

// 获得数据
export const getItem = (key) => {
  const data = localStorage.getItem(key)
  // 处理localStorage内的数据
  // 不需要async
  try {
    return JSON.parse(data)
  } catch {
    return data
  }
}

// 删除数据
export const removeItem = (key) => {
  localStorage.removeItem(key)
}

导出了存储数据,获取数据,和删除数据的函数,数据的转换在这里进行

 Vuex

import Vue from 'vue'
import Vuex from 'vuex'
// 导入本地存储的模块
import { setItem, getItem } from '@/assets/utils/storeage'

Vue.use(Vuex)

const tokenKey = 'user'

export default new Vuex.Store({
  state: {
    // 一个对象用于存储当前登录用户信息里面包含token等数据
    user: getItem(tokenKey)
  },
  mutations: {
    saveToken(state, data) {
      state.user = data
      // 为了防止刷新丢失需要把数据备份到本地存储
      setItem(tokenKey, state.user)
    }
  },
  actions: {},
  modules: {}
})

        实现了本地数据存储只是用来延长token存在的时间其他的一切操作都是用vuex内的state.user内的数据来进行 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Heigl swift

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值