Vue实现对游客用户生成唯一的UUID

项目场景:

为游客用户生成一个UUID,以方便购买产品。


解决方案:

使用UUID生成唯一的ID:
具体使用步骤如下:
1、首先封装uuid,生成uuid。
新建文件:uuid_token.js

//uuid_token.js
import {v4 as uuidv4 } from 'uuid'
//要生成一个随机字符串,且每次执行不能发生变化,游客身份持久存储

export const getUUID=()=>{
	//先从本地存储中获取uuid(先看一下本地存储中是否存在)
	let uuid_token = localStorage.getItem('UUIDTOKEN');
	//如果没有,则生成一个
	if(!uuid_token){
		//生成游客临时身份
		uuid_token = uuidv4();
		//本地存储存储一次
		localStorage.setItem('UUIDTOKEN', uuid_token)

	}//切记要有返回值
	return uuid_token
}

2、这里我们将UUID储存在detail的小仓库中:

//detail的vuex小仓库
import { getUUID } from '@/utils/uuid_token'
const state = {
	//临时游客的唯一身份
	uuid_token:getUUID()
}
const mutations = {}
const actions = {}
const getters = {}
export default {
	state, 
	mutations,
	actions,
	getters
}

3、在之前封装的request.js中获取生成的uuid:

//对于axios进行二次封装
import axios from "axios";
//引入进度条
import nprogress from "nprogress";
//进入进度条样式
import 'nprogress/nprogress.css'
//在当前模块引入store,获取其中的uuid
import store from '@/store'
//1、利用axios方法创建一个axios实例
const requests = axios.create({
	//配置对象
	baseURL: '/api',
	//代表超时时间:5s
	timeout:5000,

});
//请求拦截器,在请求发出去之前做一些处理
requests.interceptors.request.use((config)=>{
	//获取游客用户的uuid
	if(store.state.detail.uuid_token){
		//如果已经有了uuid,则在headers中添加一个字段,这里需要与后端约定
		config.headers.userTempId = store.state.detail.uuid_token
	}
//config:配置好对象,对象中有一个属性,heards请求头
//进度条开始动
	nprogress.start();
	return config;
})

//相应拦截器i
requests.interceptors.response.use((res)=>{
	//成功的函数
	//进度条结束
	nprogress.done()
	return res.data
},(error)=>{
	return Promise.reject(new Error('faile'));
}
)



//对外暴露axios端口
export default requests
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值