置信大家平时的有的业务逻辑
就是登录之后要把token存下来
之前的我的项目大多数用的都是cookie
在这次的我的项目我用了vue-cookies保留token
保留没有问题 然而我须要再main.js中写一个全局的办法须要获取cookie中的token 这时候就发现了 无论是我用vue-cookies的办法 还是js原生的获取cookie都获取不到 百度了很多办法都没有实现
于是还是决定应用localStorage localStorage是没有时效设置的 所以须要本人写一个办法来设置时效
代码参考https://blog.csdn.net/yunchon...
首先新建一个js文件用来放封装的办法
storage.js
let myStorage=(function() { function setItem(params) {//存入localStorage办法 // 存入的参数 const obj = { name: "", // 存入的名字 value: "", // 存入的值 expires: "", // 过期工夫 startTime: new Date().getTime() //存入的工夫 } const options = {};// 将obj 和传进来的params 合并 放到options外面 实现js中浅拷贝 Object.assign(options, obj, params); // 判断用户是否设置了过期工夫 if (options.expires) { // 以options.name为key, options为值放进去 localStorage.setItem(options.name, JSON.stringify(options)); } else { // 如果 options.expires 没有设置的话, 就判断一下value的类型 // 留神 咱们 的 localStorage 只能存储字符串 像是数组和对象要转换下 let type = Object.prototype.toString.call(options.value); if (type == '[object Object]' || type == '[object Array]') { options.value = JSON.stringify(options.value); } localStorage.setItem(options.name, options.value); } } // 获取数值 function getItem(name) { let item = localStorage.getItem(name); // 判断 item 是否存在 if (item) { // 先将取到的对象 看能转换成object 对象格局,不能就阐明不是json字符串模式 try { item = JSON.parse(item); } catch (error) { item = item; } // 如果有expires的值,阐明设置了生效工夫 if (item.expires) { // 获取以后工夫 let now = new Date().getTime(); // 以后的工夫和存入时候的工夫 进行相减 和过期工夫进行比拟 // 大于就阐明过期了 革除存储 小于或者等于 就没有过期 if (now - item.startTime > item.expires) { localStorage.removeItem(name); return false; // 返回一个状态值 } else { //缓存未过期,返回值 return item.value; } } else { // 没有设置过期工夫,间接返回值 return item; } }else{ return false; // 如果item 值为undefined 则阐明没有存储 返回false } } // 移除指定的缓存 function removeItem(name) { localStorage.removeItem(name); } // 移除所有的存储数据 function clear() { localStorage.clear(); } return { // 返回 执行接口 setItem, getItem, removeItem, clear }})();export default myStorage; //裸露办法
外围的代码就是这些
而后引入这个js
import setStorage from 'yourpath/storage.js'
接下来就能够应用了
setStorage.setItem({value:yourtoken,name:'token',expires:604800000})//存储token 过期工夫是毫秒 我这里是一周setStorage.getItem('token')//获取token