diff --git a/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java b/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
index 1388940..7ac29f1 100644
--- a/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
+++ b/src/main/java/edu/bjtu/groupone/backend/controller/UserController.java
@@ -1,9 +1,7 @@
 package edu.bjtu.groupone.backend.controller;
 
-import edu.bjtu.groupone.backend.model.InviteCode;
 import edu.bjtu.groupone.backend.model.Result;
 import edu.bjtu.groupone.backend.model.User;
-import edu.bjtu.groupone.backend.service.InviteCodeService;
 import edu.bjtu.groupone.backend.service.UserService;
 import edu.bjtu.groupone.backend.utils.JwtUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -22,8 +20,6 @@
 
     @Autowired
     private UserService userService;
-    @Autowired
-    private InviteCodeService inviteCodeService;
 
     /** 登录：接收表单字段 identificationNumber、password */
     @PostMapping("/login")
@@ -56,13 +52,9 @@
             @RequestParam String email,
             @RequestParam String password,
             @RequestParam String verificationCode,
-            @RequestParam Integer identificationNumber,
-            @RequestParam String inviteCode
+            @RequestParam Integer identificationNumber
     ) {
-        // 1. 验证邀请码
-        if (inviteCodeService.validateInviteCode(inviteCode) == null) {
-            return Result.error("无效邀请码或已过期");
-        }
+
         // 2. 验证邮箱验证码
         if (!userService.verifyCode(email, verificationCode)) {
             return Result.error("验证码错误或已过期");
@@ -83,22 +75,16 @@
         );
         // 5. 插入到数据库
         userService.register(newUser);
-        // 6. 扣减邀请码次数
-        if (!inviteCodeService.useInviteCode(inviteCode)) {
-            log.error("邀请码扣减失败, code={}", inviteCode);
-        }
+
         return Result.success("注册成功");
     }
 
     /** 发送邮箱验证码：接收表单字段 email、inviteCode */
     @PostMapping("/sendVerification")
     public Result sendVerification(
-            @RequestParam String email,
-            @RequestParam String inviteCode
+            @RequestParam String email
     ) {
-        if (inviteCodeService.validateInviteCode(inviteCode) == null) {
-            return Result.error("无效邀请码");
-        }
+
         userService.sendVerificationCode(email);
         return Result.success("验证码已发送");
     }
diff --git a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
index f3b9d2d..f00a646 100644
--- a/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
+++ b/src/main/java/edu/bjtu/groupone/backend/interceptor/Interceptor.java
@@ -14,6 +14,8 @@
 @Slf4j
 @Component
 public class Interceptor implements HandlerInterceptor {
+
+    
     @Override
     public boolean preHandle(HttpServletRequest req,
                              HttpServletResponse resp,
diff --git a/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java b/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java
deleted file mode 100644
index 78bb7e0..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/mapper/InviteCodeMapper.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package edu.bjtu.groupone.backend.mapper;
-
-import edu.bjtu.groupone.backend.model.InviteCode;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface InviteCodeMapper {
-    @Select("SELECT * FROM invite_code WHERE code = #{code}")
-    InviteCode selectByCode(String code);
-
-    @Update("UPDATE invite_code SET remaining_uses = remaining_uses - 1 " +
-            "WHERE code = #{code} AND remaining_uses > 0")
-    int decrementRemainingUses(String code);
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java b/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java
deleted file mode 100644
index f1019f9..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/model/InviteCode.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package edu.bjtu.groupone.backend.model;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import java.time.LocalDateTime;
-
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-public class InviteCode {
-    private String code;
-    private int maxUses;
-    private int remainingUses;
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private LocalDateTime expiryTime;  //失效时间
-    private int createdBy;  //创建者的id
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java b/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java
deleted file mode 100644
index 9391e14..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/service/InviteCodeService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package edu.bjtu.groupone.backend.service;
-
-import edu.bjtu.groupone.backend.model.InviteCode;
-
-public interface InviteCodeService {
-    InviteCode validateInviteCode(String code);
-    boolean useInviteCode(String code);
-}
diff --git a/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java b/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java
deleted file mode 100644
index b08b7a5..0000000
--- a/src/main/java/edu/bjtu/groupone/backend/service/impl/InviteCodeServiceImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package edu.bjtu.groupone.backend.service.impl;
-
-import edu.bjtu.groupone.backend.mapper.InviteCodeMapper;
-import edu.bjtu.groupone.backend.model.InviteCode;
-import edu.bjtu.groupone.backend.service.InviteCodeService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.time.LocalDateTime;
-
-@Service
-public class InviteCodeServiceImpl implements InviteCodeService {
-
-    @Autowired
-    private InviteCodeMapper inviteCodeMapper;
-
-    /**
-     * 验证邀请码是否存在、未过期且剩余次数大于 0
-     */
-    @Override
-    public InviteCode validateInviteCode(String code) {
-        InviteCode inviteCode = inviteCodeMapper.selectByCode(code);
-        if (inviteCode == null
-                || inviteCode.getRemainingUses() <= 0
-                || inviteCode.getExpiryTime().isBefore(LocalDateTime.now())) {
-            return null;
-        }
-        return inviteCode;
-    }
-
-    /**
-     * 使用一次邀请码：先验证再扣减剩余次数
-     */
-    @Override
-    public boolean useInviteCode(String code) {
-        // 先调用 validateInviteCode 保证业务合理性
-        InviteCode valid = validateInviteCode(code);
-        if (valid == null) {
-            return false;
-        }
-        // 再执行扣减
-        int updated = inviteCodeMapper.decrementRemainingUses(code);
-        return updated > 0;
-    }
-}
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
index 8bb0c85..823ecdf 100644
--- a/src/main/resources/schema.sql
+++ b/src/main/resources/schema.sql
@@ -13,15 +13,7 @@
                         INDEX `idx_user_id` (`user_id`)          -- 可选：主键通常自带索引
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
-CREATE TABLE invite_code (
-                             code VARCHAR(20) PRIMARY KEY,
-                             max_uses INT NOT NULL,
-                             remaining_uses INT NOT NULL,
-                             expiry_time DATETIME NOT NULL,
-                             created_by INT NOT NULL,
-                             created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-                             FOREIGN KEY (created_by) REFERENCES user(user_id)
-);
+
 
 CREATE TABLE user_follow (
                              follower_id INT NOT NULL,
@@ -38,8 +30,3 @@
              'admin', 'admin@example.com', 'admin123', NOW(), 87654321, 'admin'
          );
 
-INSERT INTO invite_code (
-    code, max_uses, remaining_uses, expiry_time, created_by
-) VALUES
-      ('WELCOME2025', 5, 5, '2026-01-01 00:00:00', 1),
-      ('INVITEONLY', 3, 3, '2025-12-31 23:59:59', 1);
\ No newline at end of file
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
diff --git a/src/main/resources/static/register.html b/src/main/resources/static/register.html
index 1e43e90..549c790 100644
--- a/src/main/resources/static/register.html
+++ b/src/main/resources/static/register.html
@@ -19,8 +19,6 @@
     <input type="password" name="password" required>
     <label>身份证号（8 位数字）：</label>
     <input type="number" name="identificationNumber" required>
-    <label>邀请码：</label>
-    <input type="text" name="inviteCode" required>
     <button type="submit">注册</button>
 </form>
 <script>
@@ -28,7 +26,6 @@
         .addEventListener('click', async () => {
             const form = new URLSearchParams();
             form.set('email', document.querySelector('[name=email]').value);
-            form.set('inviteCode', document.querySelector('[name=inviteCode]').value);
             const res = await fetch('/sendVerification', {
                 method: 'POST',
                 body: form
