vue3中,js-cookie的使用 & token之获取token-getToken()、存储token-setToken()、移除token-removeToken()

本文介绍了在Vue3项目中如何使用js-cookie库进行token的获取、存储(sessionStorage、localStorage或cookie)以及移除操作。配置了token的存储位置和名称,并展示了在组件中的使用示例。
摘要由CSDN通过智能技术生成

vue3中,js-cookie的使用 & token之获取token-getToken()、存储token-setToken()、移除token-removeToken()

配置token

src\app\science\config\setting.config.js

/**
 * @description 导出通用配置
 */
module.exports = {

// token存储位置localStorage sessionStorage cookie
storage: 'sessionStorage',
tokenTableName: 'saber-access-token', 
  // token名称
  tokenName: 'auth_token',
  // tokenName: 'Things-Auth',
  // token在localStorage、sessionStorage、cookie存储的key的名称
  tokenTableName: 'saber-access-token', 
}

src\utils\token.ts

import { storage, tokenTableName } from '@/config/setting.config.js'
import cookie from 'js-cookie'

/**
 * @description 获取token
 * @returns {string|ActiveX.IXMLDOMNode|Promise<any>|any|IDBRequest<any>|MediaKeyStatus|FormDataEntryValue|Function|Promise<Credential | null>}
 */
export function getToken() {
  const token = sessionStorage.getItem('token')
  return token
}

export function getBPMToken() {
  const config = sessionStorage.getItem('configInfo') || '{}'
  const configInfo = JSON.parse(config)
  const token = (configInfo && configInfo.bpmTenantToken) || getToken()
  return token
}

/**
 * @description 存储token
 * @param token
 * @returns {void|*}
 */
export function setToken(token: string) {
  if (storage) {
    if ('localStorage' === storage) {
      return localStorage.setItem(tokenTableName, token)
    } else if ('sessionStorage' === storage) {
      return sessionStorage.setItem(tokenTableName, token)
    } else if ('cookie' === storage) {
      return cookie.set(tokenTableName, token)
    } else {
      return localStorage.setItem(tokenTableName, token)
    }
  } else {
    return localStorage.setItem(tokenTableName, token)
  }
}

/**
 * @description 移除token
 * @returns {void|Promise<void>}
 */
export function removeToken() {
  if (storage) {
    if ('localStorage' === storage) {
      return localStorage.removeItem(tokenTableName)
    } else if ('sessionStorage' === storage) {
      return sessionStorage.clear()
    } else if ('cookie' === storage) {
      return cookie.remove(tokenTableName)
    } else {
      return localStorage.removeItem(tokenTableName)
    }
  } else {
    return localStorage.removeItem(tokenTableName)
  }
}
使用token
<script lang="ts" setup>
import { getToken,setToken,removeToken } from '@src/utils/token'  
//获取token
const userInfo = ref({
   token: getToken(),
   menu: '设置',
})

//设置token
const token = userInfo.access_token
setToken(token)

//移除token
removeToken()
</script>
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 + Pinia ,可以使用 Pinia 来定义并管理全局状态。首先,需要创建一个 `store` 实例,并定义 `state` 和 `mutations`: ```typescript import { defineStore } from 'pinia'; interface AuthState { token: string | null; } export const useAuthStore = defineStore({ id: 'auth', state: (): AuthState => ({ token: null, }), mutations: { setToken(state: AuthState, token: string | null) { state.token = token; }, }, }); ``` 在上面的代码,我们定义了一个名为 `useAuthStore` 的 store,并指定了它的 `id` 为 `auth`。`state` 定义了一个名为 `token` 的属性,初始值为 `null`。`mutations` 定义了一个名为 `setToken` 的 mutation,用于设置 `token` 的值。 接下来,我们可以在 store 定义一个 `getters`,用于获取 `token` 的值: ```typescript import { defineStore } from 'pinia'; interface AuthState { token: string | null; } export const useAuthStore = defineStore({ id: 'auth', state: (): AuthState => ({ token: null, }), mutations: { setToken(state: AuthState, token: string | null) { state.token = token; }, }, getters: { getToken(state: AuthState) { return state.token; }, }, }); ``` 现在,我们在 store 定义了一个名为 `getToken` 的 getter,用于获取 `token` 的值。在组件,我们可以使用 `useAuthStore` 的 `useStore` 辅助函数来创建一个 store 实例: ```typescript import { useAuthStore } from '@/store'; export default { setup() { const authStore = useAuthStore(); const setToken = (token: string | null) => { authStore.setToken(token); }; const getToken = () => { return authStore.getToken; }; return { setToken, getToken, }; }, }; ``` 这样,在组件就可以通过 `setToken` 和 `getToken` 方法来设置和获取 `token` 的值了。例如,在登录成功后设置 `token` 的值: ```typescript import { useAuthStore } from '@/store'; export default { setup() { const authStore = useAuthStore(); const handleLogin = async () => { // 发送登录请求并获取 token const token = 'xxxxx'; authStore.setToken(token); }; return { handleLogin, }; }, }; ``` 在其他组件,我们也可以使用 `getToken` 方法来获取 `token` 的值: ```typescript import { useAuthStore } from '@/store'; export default { setup() { const authStore = useAuthStore(); const token = authStore.getToken; return { token, }; }, }; ``` 这样,就可以在 Vue 3 + Pinia 应用定义和管理 `token` 了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值