diff --git a/src/main/resources/static/home.html b/src/main/resources/static/home.html
index 635856a..5cac114 100644
--- a/src/main/resources/static/home.html
+++ b/src/main/resources/static/home.html
@@ -1,24 +1,30 @@
-<!-- src/main/resources/static/home.html -->
 <!DOCTYPE html>
 <html lang="zh-CN">
-<head><meta charset="UTF-8"><title>首页</title></head>
+<head>
+    <meta charset="UTF-8">
+    <title>首页</title>
+</head>
 <body>
 <h1>欢迎访问受保护页面</h1>
 <div id="userInfo"></div>
 <script>
-    (async ()=>{
-        const token = localStorage.getItem('token');
-        if (!token) return window.location.href='login.html';
+    (async () => {
+        const token = localStorage.getItem('token'); // 从 localStorage 获取 token
+        if (!token) return window.location.href = 'login.html'; // 如果 token 不存在，重定向到登录页面
+
         const res = await fetch('/api/me', {
-            headers: { 'token': token }
+            headers: { 'token': token } // 使用 token 请求用户信息
         });
-        const json = await res.json();
-        if (json.code!==0) {
-            return window.location.href='login.html';
+
+        const json = await res.json(); // 解析响应数据
+        if (json.code !== 0) {
+            return window.location.href = 'login.html'; // 如果获取用户信息失败，重定向到登录页面
         }
+
+        // 输出当前用户和 token
         document.getElementById('userInfo')
-            .innerText = '当前用户：' + json.data.username;
+            .innerText = '当前用户：' + json.data.username + '，Token：' + json.data; // 显示用户名和 token
     })();
 </script>
 </body>
-</html>
+</html>
\ No newline at end of file
