diff --git a/src/main/java/com/g9/g9backend/controller/UserController.java b/src/main/java/com/g9/g9backend/controller/UserController.java
index 38b4586..9315e8e 100644
--- a/src/main/java/com/g9/g9backend/controller/UserController.java
+++ b/src/main/java/com/g9/g9backend/controller/UserController.java
@@ -488,4 +488,58 @@
         GetUserDTO getUserDTO = new GetUserDTO(subscriberList);
         return ResponseEntity.ok(getUserDTO);
     }
+
+    /**
+     * 修改用户签名
+     *
+     * @param user 用户信息
+     * @return 用户签名修改结果
+     */
+    @PutMapping("/signature")
+    public ResponseEntity<String> modifySignature(@RequestBody User user) {
+        UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+        userUpdate.eq("user_id", user.getUserId()).set("signature", user.getSignature());
+        userService.update(userUpdate);
+
+        return ResponseEntity.ok("");
+    }
+
+    /**
+     * 修改用户密码
+     *
+     * @param modifyPasswordDTO 用户信息
+     * @return 用户密码修改结果
+     */
+    @PutMapping("/password")
+    public ResponseEntity<String> modifyPassword(@RequestBody ModifyPasswordDTO modifyPasswordDTO) {
+        // 检查密码是否正确
+        QueryWrapper<User> userQuery = new QueryWrapper<>();
+        userQuery.eq("user_id", modifyPasswordDTO.getUserId());
+        User user = userService.getOne(userQuery);
+        if (user.getPassword().equals(modifyPasswordDTO.getPassword())) {
+            UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+            userUpdate.eq("user_id", modifyPasswordDTO.getUserId()).set("password", modifyPasswordDTO.getNewPassword());
+            userService.update(userUpdate);
+            return ResponseEntity.ok("");
+        } else {
+            // 密码错误
+            logger.warn("Modify failed. Incorrect password for userID: {}", modifyPasswordDTO.getUserId());
+            return ResponseEntity.status(408).body("");
+        }
+    }
+
+    /**
+     * 修改用户头像
+     *
+     * @param user 用户信息
+     * @return 用户头像修改结果
+     */
+    @PutMapping("/avatar")
+    public ResponseEntity<String> modifyAvatar(@RequestBody User user) {
+        UpdateWrapper<User> userUpdate = new UpdateWrapper<>();
+        userUpdate.eq("user_id", user.getUserId()).set("avatar", user.getAvatar());
+        userService.update(userUpdate);
+
+        return ResponseEntity.ok("");
+    }
 }
\ No newline at end of file
