From 0ef910aa436146bb4ac439694000aaa6b58c741b Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@163.com> Date: 星期一, 15 四月 2024 14:16:44 +0800 Subject: [PATCH] # --- src/utils/request.js | 56 ++++++++++++++++++++++++++++ src/config/setting.js | 7 +++ .env | 1 src/utils/token-util.js | 25 ++++++++++++ vite.config.js | 1 5 files changed, 90 insertions(+), 0 deletions(-) diff --git a/.env b/.env new file mode 100644 index 0000000..927a616 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +COOL_API_BASE_URL = 'http://localhost:8080' diff --git a/src/config/setting.js b/src/config/setting.js new file mode 100644 index 0000000..ea20bf7 --- /dev/null +++ b/src/config/setting.js @@ -0,0 +1,7 @@ +export const API_BASE_URL = import.meta.env.COOL_API_BASE_URL; + +export const TOKEN_HEADER_NAME = 'Authorization'; + +export const UN_AUTH_CODE = 403; + + diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..3c1e896 --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,56 @@ +import axios from 'axios'; +import { API_BASE_URL, TOKEN_HEADER_NAME, UN_AUTH_CODE } from '@/config/setting'; +import { getToken, setToken } from './token-util'; + +const service = axios.create({ + baseURL: API_BASE_URL +}); + +/** + * pre + */ +service.interceptors.request.use( + (config) => { + const token = getToken(); + if (token && config.headers) { + config.headers[TOKEN_HEADER_NAME] = token; + } + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +/** + * post + */ +service.interceptors.response.use( + (res) => { + if (res.data?.code === UN_AUTH_CODE) { + // Modal.destroyAll(); + // Modal.info({ + // title: 'Token has expired, please log in again!', + // okText: 'LOGIN', + // style: "top: 20px", + // onOk: () => { + // logout(); + // } + // }); + alert('Token has expired, please log in again!'); + // todo: logout + return Promise.reject(new Error(res.data.message)); + } else { + const token = res.headers[TOKEN_HEADER_NAME.toLowerCase()]; + if (token) { + setToken(token); + } + return res; + } + }, + (error) => { + return Promise.reject(error); + } +); + +export default service; \ No newline at end of file diff --git a/src/utils/token-util.js b/src/utils/token-util.js new file mode 100644 index 0000000..d66fb33 --- /dev/null +++ b/src/utils/token-util.js @@ -0,0 +1,25 @@ +import { TOKEN_HEADER_NAME } from '@/config/setting'; + +export const getToken = () => { + const token = localStorage.getItem(TOKEN_HEADER_NAME); + if (!token) { + return sessionStorage.getItem(TOKEN_HEADER_NAME); + } + return token; +} + +export const setToken = (token, remember) => { + removeToken(); + if (token) { + if (remember) { + localStorage.setItem(TOKEN_HEADER_NAME, token); + } else { + sessionStorage.setItem(TOKEN_HEADER_NAME, token); + } + } +} + +export const removeToken = () => { + localStorage.removeItem(TOKEN_HEADER_NAME); + sessionStorage.removeItem(TOKEN_HEADER_NAME); +} \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index b7c2745..d2a0475 100644 --- a/vite.config.js +++ b/vite.config.js @@ -13,4 +13,5 @@ server: { host: '0.0.0.0' }, + envPrefix: "COOL_", }) -- Gitblit v1.9.1