diff --git a/src/services/request.js b/src/services/request.js
new file mode 100644
index 0000000..1fb38c6
--- /dev/null
+++ b/src/services/request.js
@@ -0,0 +1,79 @@
+import axios from "axios";
+import { message } from "antd";
+
+// 创建 axios 实例
+const request = axios.create({
+  baseURL: "/",
+  timeout: 10000,
+});
+
+// 请求拦截器
+// 请求拦截器中添加角色检查
+request.interceptors.request.use(
+  (config) => {
+    // 从 localStorage 获取 token
+    const token = localStorage.getItem("token");
+
+    // 如果有 token 则添加到请求头
+    if (token) {
+      config.headers["Authorization"] = `Bearer ${token}`;
+    }
+
+    // 角色检查
+    // 例如，对特定API路径进行角色检查
+    if (config.url.startsWith("/api/admin") && !hasAdminRole()) {
+      // 取消请求
+      return Promise.reject(new Error("无权限执行此操作"));
+    }
+
+    return config;
+  },
+  (error) => {
+    return Promise.reject(error);
+  }
+);
+
+// 辅助函数：检查是否有管理员角色
+function hasAdminRole() {
+  const user = JSON.parse(localStorage.getItem("user") || "{}");
+  return user.role === "admin";
+}
+
+// 响应拦截器
+request.interceptors.response.use(
+  (response) => {
+    return response;
+  },
+  (error) => {
+    if (error.response) {
+      const { status, data } = error.response;
+
+      // 处理 401 未授权错误（token 无效或过期）
+      if (status === 401) {
+        message.error("登录已过期，请重新登录");
+
+        // 清除本地存储的 token 和用户信息
+        localStorage.removeItem("token");
+        localStorage.removeItem("user");
+
+        // 重定向到登录页
+        if (window.location.pathname !== "/login") {
+          window.location.href = "/login";
+        }
+      } else {
+        // 处理其他错误
+        message.error(data.message || "请求失败");
+      }
+    } else if (error.request) {
+      // 请求发出但没有收到响应
+      message.error("网络错误，请检查您的网络连接");
+    } else {
+      // 请求配置出错
+      message.error("请求配置错误");
+    }
+
+    return Promise.reject(error);
+  }
+);
+
+export default request;
