Browse Source

feat:新增一种APP的认证方式,用redis缓存用户信息

zhangwl 1 month ago
parent
commit
3182412137
1 changed files with 7 additions and 13 deletions
  1. 7 13
      app/routers/chat.py

+ 7 - 13
app/routers/chat.py

@@ -5,6 +5,7 @@ from volcenginesdkarkruntime import Ark
 from pydantic import BaseModel
 from pydantic import BaseModel
 from typing import List, Optional, Dict, Any, Annotated
 from typing import List, Optional, Dict, Any, Annotated
 from datetime import datetime
 from datetime import datetime
+from fastapi import Query
 import json
 import json
 import asyncio
 import asyncio
 import jwt
 import jwt
@@ -328,13 +329,15 @@ async def generate_stream_response(request: ChatRequest, username: str):
 @router.post("/chat", response_model=ChatResponse)
 @router.post("/chat", response_model=ChatResponse)
 async def chat(
 async def chat(
         request: ChatRequest,
         request: ChatRequest,
-        jwt_token: Annotated[Optional[str], Depends(oauth2_scheme_optional)] = None
+        jwt_token: Annotated[Optional[str], Depends(oauth2_scheme_optional)] = None,
+        source: Optional[str] = Query(default=None),      # 从 URL 获取
+        token: Optional[str] = Query(default=None)        # 从 URL 获取
 ):
 ):
     try:
     try:
         # ===== 认证分支 =====
         # ===== 认证分支 =====
-        if request.source == "app" and request.token:
+        if source == "app" and token:
             # 第三方 App token 认证
             # 第三方 App token 认证
-            app_user = get_app_user(request.token)
+            app_user = get_app_user(token)
             if not app_user:
             if not app_user:
                 raise HTTPException(status_code=401, detail="无效的 App token")
                 raise HTTPException(status_code=401, detail="无效的 App token")
             username = f"app_{app_user['userId']}"
             username = f"app_{app_user['userId']}"
@@ -470,15 +473,6 @@ async def chat(
                     # 将AI回复添加到用户的聊天历史
                     # 将AI回复添加到用户的聊天历史
                     chatHistory[username].append(assistant_message)
                     chatHistory[username].append(assistant_message)
 
 
-                    # 保存聊天日志到 MongoDB
-                    save_chat_log(
-                        username=username,
-                        question=latest_user_msg.content,
-                        answer=message_content,
-                        stream_mode=False,
-                        response_id=response.id,
-                    )
-
                     # 构建完整的响应对象
                     # 构建完整的响应对象
                     chat_response = ChatResponse(
                     chat_response = ChatResponse(
                         message=assistant_message,  # AI回复消息
                         message=assistant_message,  # AI回复消息
@@ -508,7 +502,7 @@ async def chat(
         # 捕获所有其他异常并转换为HTTP异常
         # 捕获所有其他异常并转换为HTTP异常
         error_message = f"处理聊天请求时发生错误: {str(e)}"
         error_message = f"处理聊天请求时发生错误: {str(e)}"
         save_chat_log(
         save_chat_log(
-            username=current_user.username,
+            username=username,
             question=request.messages[-1].content if request.messages else "",
             question=request.messages[-1].content if request.messages else "",
             stream_mode=request.stream,
             stream_mode=request.stream,
             status="error",
             status="error",