diff --git a/src/context/UserContext.js b/src/context/UserContext.js
index a76b638..01f500d 100644
--- a/src/context/UserContext.js
+++ b/src/context/UserContext.js
@@ -1,28 +1,53 @@
 import React, { createContext, useContext, useState, useEffect } from 'react';
 
+const avatarBaseUrl = process.env.REACT_APP_AVATAR_BASE_URL || '';
+
 export const UserContext = createContext();
 
 export const UserProvider = ({ children }) => {
   const [user, setUser] = useState(null);
   const [loading, setLoading] = useState(true);
 
+  // ✅ 标准化用户数据结构
+  const formatUser = (raw) => {
+    if (!raw) return null;
+    return {
+      userId: raw.userId || raw.id || null,
+      username: raw.username || '匿名用户',
+      avatarUrl: raw.avatarUrl ? `${avatarBaseUrl}${raw.avatarUrl}` : null,
+      ...raw, // 保留其它字段（如 email, level 等）
+    };
+  };
+
   useEffect(() => {
     const storedUser = localStorage.getItem('user');
     if (storedUser) {
-      setUser(JSON.parse(storedUser));
+      try {
+        const parsed = JSON.parse(storedUser);
+        setUser(formatUser(parsed));
+      } catch (err) {
+        console.error('本地用户信息解析失败:', err);
+        localStorage.removeItem('user');
+        setUser(null);
+      }
     } else {
       // 设置默认用户
-      const defaultUser = { userId: 1, username: '测试用户' };
+      const defaultUser = {
+        userId: 1,
+        username: '测试用户',
+        avatarUrl: null,
+      };
       localStorage.setItem('user', JSON.stringify(defaultUser));
-      setUser(defaultUser);
+      setUser(formatUser(defaultUser));
     }
     setLoading(false);
   }, []);
 
   const saveUser = (userData) => {
-    if (userData && userData.id) {
-      localStorage.setItem('user', JSON.stringify(userData));
-      setUser(userData);
+    if (userData && (userData.userId || userData.id)) {
+      const formatted = formatUser(userData);
+      localStorage.setItem('user', JSON.stringify(userData)); // 原始数据存储
+      setUser(formatted); // 格式化后使用
     } else {
       console.error('无效的用户数据:', userData);
     }
@@ -46,4 +71,4 @@
     throw new Error('useUser must be used within a UserProvider');
   }
   return context;
-};
\ No newline at end of file
+};
