diff --git a/Merge/back_ljc/app.py b/Merge/back_ljc/app.py
index 0e10b68..f672fc3 100644
--- a/Merge/back_ljc/app.py
+++ b/Merge/back_ljc/app.py
@@ -230,9 +230,9 @@
 # 更新用户信息
 @app.route('/api/user/<int:user_id>', methods=['PUT'])
 def update_user(user_id):
-    # current_user_id = session.get('user_id', 1)
-    # if current_user_id != user_id:
-    #     return jsonify({'error': 'Unauthorized'}), 403
+    current_user_id = session.get('user_id', 1)
+    if current_user_id != user_id:
+        return jsonify({'error': 'Unauthorized'}), 403
     
     user = User.query.get(user_id)
     if not user:
@@ -265,9 +265,9 @@
     if 'user_id' not in session:
         return jsonify({'error': '未登录'}), 401
     
-    # # 验证请求的用户ID与登录用户ID是否一致
-    # if session['user_id'] != user_id:
-    #     return jsonify({'error': '无权访问其他用户的收藏'}), 403
+    # 验证请求的用户ID与登录用户ID是否一致
+    if session['user_id'] != user_id:
+        return jsonify({'error': '无权访问其他用户的收藏'}), 403
     
     try:
         # 获取收藏行为及其关联的帖子
@@ -449,13 +449,13 @@
     try:
         # 计算用户的获赞总数（所有帖子的点赞数）
         like_count = db.session.query(db.func.sum(Behavior.value)).filter(
-            Behavior.user_id==user_id,
+            Behavior.post.has(user_id=user_id),
             Behavior.type == 'like'
         ).scalar() or 0
         
         # 计算用户的收藏总数（所有帖子的收藏数）
         favorite_count = db.session.query(db.func.sum(Behavior.value)).filter(
-            Behavior.user_id==user_id,
+            Behavior.post.has(user_id=user_id),
             Behavior.type == 'favorite'
         ).scalar() or 0
         
