vue項(xiàng)目登錄成功拿到令牌跳轉(zhuǎn)失敗401無(wú)登錄信息的解決
目錄
- vue項(xiàng)目登錄成功拿到令牌跳轉(zhuǎn)失敗401無(wú)登錄信息
- 問題原因
- vue項(xiàng)目登錄處理token令牌問題
- 總結(jié)
vue項(xiàng)目登錄成功拿到令牌跳轉(zhuǎn)失敗401無(wú)登錄信息
之前的一個(gè)上線半年多的項(xiàng)目,客戶提出一點(diǎn)小需求改動(dòng),當(dāng)跑項(xiàng)目時(shí)發(fā)現(xiàn)線上沒有問題,線下登錄成功,自動(dòng)跳轉(zhuǎn)后驗(yàn)證登錄人信息時(shí)驗(yàn)證失敗,無(wú)登錄信息導(dǎo)致頁(yè)面一直停留在登錄頁(yè)
登錄請(qǐng)求成功
隨后跳轉(zhuǎn)頁(yè)面后調(diào)取當(dāng)前登錄人信息無(wú)效,跳回登錄頁(yè)重新登錄
導(dǎo)致頁(yè)面一直停留在登錄頁(yè)。
問題原因
線下測(cè)試環(huán)境地址可能存在跨域問題,但是不會(huì)報(bào)跨域錯(cuò)誤,部分接口可以訪問,但訪問后的接口數(shù)據(jù)得不到認(rèn)可。
common.js原地址寫法
root() {return o.isDev() ? "https://www.baidu.com/api/admin/" : "https://www.baidu.com/api/admin/"; },
改為
root() {return "/api/admin/"; },
同時(shí)vue.config.js加代碼如下
const devServerBaseUrl = "https://www.baidu.com"module.exports = { devServer: { // 在devServer里加下面代碼proxy: { "/api/*": {target: devServerBaseUrl,pathRewrite: { "^/api": "/api"} },} // 加以上代碼,其他需要的配置這里刪除了,其他配置需要的自行添加 },}
這樣就可以避免接口地址正確,但是存在跨域不報(bào)錯(cuò)的問題,如上操作是公司大佬傳授的
vue項(xiàng)目登錄處理token令牌問題
1、在點(diǎn)擊登錄按鈕后,后臺(tái)會(huì)返回一個(gè)token
2、將得到的token先儲(chǔ)存在sessionStorage中,window.sessionStorage.setItem('token',token)
3、然后就可以在請(qǐng)求攔截器中獲取到存儲(chǔ)的token
//axios請(qǐng)求攔截器? ? instance.interceptors.request.use(config => {? ? ? //在此處攜帶token,將token放在請(qǐng)求頭中,傳給后臺(tái)? ? ? if(window.sessionStorage.getItem("token")) {? ? ? ? config.headers["Authorization"] = window.sessionStorage.getItem(token)? ? ? }? ? ? return config;? ? }, err => {? ? ? console.log(err);? ? })
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。
