【背景】
后端新增加了一個過濾器,用來處理前端請求中的session
若依賴存放過濾器的目錄:RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\
【問題】
后端返回了一個狀態碼為403的錯誤,現在前端需要處理這個錯誤(跳轉到登錄首頁)。
這是后端發送的ERROR
response.sendError(HttpServletResponse.SC_FORBIDDEN, "Forbidden");
前端頁面接收到了
【解決】
在request.js
處理
在vue前端項目中找到request.js
目錄:src\utils\request.js
在這里加上對錯誤碼403的處理邏輯即可
這個根據若依這條句寫的判斷語句 message = "系統接口" + message.substr(message.length - 3) + "異常";
error => {console.log('err' + error)let { message } = error;if (message == "Network Error") {message = "后端接口連接異常";} else if (message.includes("timeout")) {message = "系統接口請求超時";}else if ( message.substr(message.length - 3) === '403') {message = "未登錄或者登錄狀態已過期,請重新登錄";location.href = 'http://localhost:8000/login';}else if (message.includes("Request failed with status code")) {message = "系統接口" + message.substr(message.length - 3) + "異常";}ElMessage({ message: message, type: 'error', duration: 5 * 1000 })return Promise.reject(error)}
)
【解析這句的作用】message.substr(message.length - 3)
console.log('err' + error) //將錯誤打印可以看到是:`AxiosError`let { message } = error; //從這個錯誤中拿到他的錯誤信息message
message.substr(message.length - 3) 是從字符串末尾提取最后三個字符的語句
邏輯為:
1、計算字符串的長度。
2、從倒數第三個字符開始提取子字符串。