最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中使用localStorage存儲(chǔ)token并設(shè)置時(shí)效

 更新時(shí)間:2023年06月07日 15:11:19   作者:Resssssss  
這篇文章主要為大家介紹了Vue中使用localStorage存儲(chǔ)token并設(shè)置時(shí)效,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

相信大家平常的有的業(yè)務(wù)邏輯,就是登錄之后要把token存下來(lái),之前的項(xiàng)目大多數(shù)用的都是cookie,在這次的項(xiàng)目我用了vue-cookies保存token

保存沒(méi)有問(wèn)題 但是我需要再main.js中寫(xiě)一個(gè)全局的方法需要獲取cookie中的token 這時(shí)候就發(fā)現(xiàn)了 無(wú)論是我用vue-cookies的方法 還是js原生的獲取cookie都獲取不到 百度了很多方法都沒(méi)有實(shí)現(xiàn)

于是還是決定使用localStorage localStorage是沒(méi)有時(shí)效設(shè)置的 所以需要自己寫(xiě)一個(gè)方法來(lái)設(shè)置時(shí)效
代碼參考 http://www.fzitv.net/article/258870.htm

首先新建一個(gè)js文件用來(lái)放封裝的方法

storage.js

let myStorage=(function() {
    function setItem(params) {//存入localStorage方法
        // 存入的參數(shù)
        const obj = {
            name: "",   // 存入的名字
            value: "",   // 存入的值
            expires: "",   // 過(guò)期時(shí)間
            startTime: new Date().getTime()  //存入的時(shí)間
        }
        const options = {};// 將obj 和傳進(jìn)來(lái)的params 合并  放到options里面 實(shí)現(xiàn)js中淺拷貝
        Object.assign(options, obj, params);
        // 判斷用戶是否設(shè)置了過(guò)期時(shí)間
        if (options.expires) {
            //  以options.name為key,    options為值放進(jìn)去
            localStorage.setItem(options.name, JSON.stringify(options));
        } else {
            // 如果 options.expires 沒(méi)有設(shè)置的話, 就判斷一下value的類(lèi)型
            // 注意 我們 的 localStorage 只能存儲(chǔ)字符串 像是數(shù)組和對(duì)象要轉(zhuǎn)換下
            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);
        }
    }
    // 獲取數(shù)值
    function getItem(name) {
        let item = localStorage.getItem(name);
        // 判斷 item 是否存在 
        if (item) {
            // 先將取到的對(duì)象 看能轉(zhuǎn)換成object 對(duì)象格式,不能就說(shuō)明不是json字符串形式
            try {
                item = JSON.parse(item);
            } catch (error) {
                item = item;
            }
            // 如果有expires的值,說(shuō)明設(shè)置了失效時(shí)間
            if (item.expires) {
                    // 獲取當(dāng)前時(shí)間
                let now = new Date().getTime();
                // 當(dāng)前的時(shí)間和存入時(shí)候的時(shí)間 進(jìn)行相減 和過(guò)期時(shí)間進(jìn)行比較
                // 大于就說(shuō)明過(guò)期了 清除存儲(chǔ)  小于或者等于 就沒(méi)有過(guò)期 
                if (now - item.startTime > item.expires) {
                    localStorage.removeItem(name);
                    return false;  // 返回一個(gè)狀態(tài)值
                } else {
                    //緩存未過(guò)期,返回值
                    return item.value;
                }
            } else {
                // 沒(méi)有設(shè)置過(guò)期時(shí)間,直接返回值
                return item;
            }
        }else{
            return false; // 如果item 值為undefined 則說(shuō)明沒(méi)有存儲(chǔ) 返回false
        }
    }
    // 移除指定的緩存
    function removeItem(name) {
        localStorage.removeItem(name);
    }
    // 移除所有的存儲(chǔ)數(shù)據(jù)
    function clear() {
        localStorage.clear();
    }
    return {    // 返回 執(zhí)行接口
        setItem,
        getItem,
        removeItem,
        clear
    }
})();
export default myStorage; //暴露方法

核心的代碼就是這些

引入這個(gè)js

import setStorage from 'yourpath/storage.js'

接下來(lái)就可以使用了

setStorage.setItem({value:yourtoken,name:'token',expires:604800000})//存儲(chǔ)token  過(guò)期時(shí)間是毫秒   我這里是一周
setStorage.getItem('token')//獲取token

以上就是Vue中使用localStorage存儲(chǔ)token并設(shè)置時(shí)效的詳細(xì)內(nèi)容,更多關(guān)于Vue使用localStorage存儲(chǔ)token并設(shè)置時(shí)效的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

阿拉善右旗| 兴仁县| 高淳县| 靖安县| 肥东县| 永定县| 建平县| 繁昌县| 东光县| 华亭县| 昌宁县| 云南省| 泸水县| 驻马店市| 韶山市| 东至县| 内乡县| 嘉兴市| 肃宁县| 靖西县| 固始县| 图木舒克市| 鹤庆县| 桦川县| 临沧市| 洞口县| 福海县| 石狮市| 麻栗坡县| 徐州市| 罗田县| 南陵县| 犍为县| 汝阳县| 万州区| 南和县| 凤凰县| 田阳县| 丹巴县| 德格县| 习水县|