diff --git a/src/contexts/AuthContext.jsx b/src/contexts/AuthContext.jsx
new file mode 100644
index 0000000..9e5bb59
--- /dev/null
+++ b/src/contexts/AuthContext.jsx
@@ -0,0 +1,44 @@
+import React, { createContext, useContext, useState, useEffect } from 'react';
+
+const AuthContext = createContext();
+
+export const AuthProvider = ({ children }) => {
+  const [user, setUser] = useState(null);
+  const [permissions, setPermissions] = useState([]);
+  const [loading, setLoading] = useState(true);
+  
+  useEffect(() => {
+    // 从localStorage加载用户和权限信息
+    const storedUser = localStorage.getItem('user');
+    const storedPermissions = localStorage.getItem('permissions');
+    
+    if (storedUser) {
+      setUser(JSON.parse(storedUser));
+    }
+    
+    if (storedPermissions) {
+      setPermissions(JSON.parse(storedPermissions));
+    }
+    
+    setLoading(false);
+  }, []);
+  
+  // 检查用户是否有特定权限
+  const hasPermission = (permissionName) => {
+    return permissions.includes(permissionName);
+  };
+  
+  // 检查用户是否有特定角色
+  const hasRole = (roleName) => {
+    return user?.role === roleName;
+  };
+  
+  return (
+    <AuthContext.Provider value={{ user, permissions, hasPermission, hasRole, loading }}>
+      {children}
+    </AuthContext.Provider>
+  );
+};
+
+// 自定义hook方便使用
+export const useAuth = () => useContext(AuthContext);
\ No newline at end of file
