Vue3 axios配置以及cookie的使用方法實例演示
調(diào)用驗證碼方法
在Request.js也就是axios中添加切換驗證碼方法
// 請求后攔截 instants.interceptors.response.use( (response) => { if (showLoading && loading) { loading.close(); } const responseData = response.data; if (responseData.status == "error") { // 如果觸發(fā)了errorCallback函數(shù),那么就讓他切換驗證碼 if (config.errorCallback) { config.errorCallback() } // 結(jié)尾 return Promise.reject(responseData.info); } else { return responseData; } }, (error) => { if (showLoading && loading) { loading.close(); } return Promise.reject("網(wǎng)絡(luò)異常"); } );
在Login.vue的請求接口中使用errorCallback方法
封裝的驗證碼地址寫法如下
const api={ checkCode:'api/checkCode', login:"login" } const formDataRef = ref() const fromData = reactive({}); // 切換驗證碼 const checkCodeUrl = ref(api.checkCode); const changeCheckCode = ()=>{ checkCodeUrl.value = api.checkCode + "?" +new Date().getTime(); }
const login = ()=>{ // validate formDataRef.value.validate(async(valid)=>{ if (!valid) { return; } let result = await proxy.Request({ url:api.login, params:{ account:fromData.account, // 這里需要通過md5進行加密 password:md5(fromData.password), checkCode:fromData.checkCode // 觸發(fā)驗證碼錯誤時切換驗證碼 },errorCallback:()=>{ changeCheckCode() } }) if (result) { return; } }) }
登錄有兩種驗證方案,可以使用token驗證或者用cookie驗證,這里說一下Cookie驗證
Cookie使用方法
安裝cookie
npm i vue-cookies --save
登錄時可以不需要使用token去驗證,cookie里已存在,這個還是根據(jù)后端用token還是cookie驗證,自己寫的話可以設(shè)置cookie模式
引入cookie
import VueCookies from 'vue-cookies';
存貯cookie
const loginInfo = { account :params.account, password:params.password, } console.log(loginInfo); // 永不過期 /* 如果得點擊記住密碼之后那么就讓他的狀態(tài),也就是cookie值永不過期,直到他自己過期 */ VueCookies.set("userInfo",result.data,0); /* 如果他點擊了記住我那么就讓他記錄七天 */ if(fromData.rememberMe){ VueCookies.set("loginInfo",loginInfo,'7d') }
最后得到cookie在頁面加載時顯示得到的賬號以及密碼
const init=()=>{ const loginInfo= VueCookies.get('loginInfo'); if (!loginInfo) { return } /* 轉(zhuǎn)成對象 */ Object.assign(fromData,loginInfo) } init();
點擊登錄執(zhí)行的完整方法:
const login = () => { // 加載狀態(tài) loading.value = true; // elm自帶方法 formDataRef.value.validate(async (valid) => { if (!valid) { loading.value = false; return; } // 得到賬號,密碼以及記住密碼 let cookieLoginInfo = VueCookies.get("loginInfo"); // cookie密碼為空的情況 let cooliePassword = cookieLoginInfo == null ? null : cookieLoginInfo.password; // 如果輸入的密碼與cookie中存的密碼一致,那么就進行加密 if (formData.password !== cooliePassword) { formData.password = md5(formData.password); } // 封裝一個對象用來包含輸入的狀態(tài),也就是賬號、密碼以及復(fù)選框 let params = { account: formData.account, password: formData.password, checkCode: formData.checkCode, }; // console.log(params); // result let result = await proxy.Request({ url: api.login, params: params, errorCallback: () => { changeCheckCode(); }, }); if (!result) { loading.value = false; formData.password = ""; return; } // 成功后自動跳轉(zhuǎn)頁面 setTimeout(() => { router.push("/"); loading.value = false; }, 1500); const loginInfo = { account: params.account, password: params.password, rememberMe: formData.rememberMe, }; console.log(loginInfo); // 永不過期 VueCookies.set("userInfo", result.data, 0); console.log(formData.rememberMe); if (formData.rememberMe == 1) { VueCookies.set("loginInfo", loginInfo, "7d"); } }); };
以上就是Vue3 axios配置以及cookie的使用方法的詳細內(nèi)容,更多關(guān)于Vue3 axios配置以及cookie的使用方法的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo
這篇文章主要介紹了Vue按照順序?qū)崿F(xiàn)多級彈窗效果 附Demo,通過實例代碼介紹了單個彈窗和多級彈窗的實現(xiàn)方法,感興趣的朋友跟隨小編一起看看吧2024-05-05vue實力踩坑?當(dāng)前頁push當(dāng)前頁無效的解決
這篇文章主要介紹了vue實力踩坑?當(dāng)前頁push當(dāng)前頁無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04關(guān)于Vue3路由push跳轉(zhuǎn)問題(解決Vue2this.$router.push失效)
這篇文章主要介紹了Vue3路由push跳轉(zhuǎn)問題(解決Vue2this.$router.push失效),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明
今天小編就為大家分享一篇淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Vue導(dǎo)出el-table表格為Excel文件的兩種方式
在開發(fā)過程中,我們經(jīng)常需要將表格數(shù)據(jù)導(dǎo)出為 Excel 文件,大多數(shù)情況下,由后端處理即可,但是當(dāng)數(shù)據(jù)量不大、需要快速響應(yīng)用戶操作、或者數(shù)據(jù)已經(jīng)在前端進行處理和展示時,前端該如何實現(xiàn)呢,本文將介紹兩種方法,需要的朋友可以參考下2024-09-09