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