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 typing import List, Optional, Dict, Any, Annotated
 from datetime import datetime
+from fastapi import Query
 import json
 import asyncio
 import jwt
@@ -328,13 +329,15 @@ async def generate_stream_response(request: ChatRequest, username: str):
 @router.post("/chat", response_model=ChatResponse)
 async def chat(
         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:
         # ===== 认证分支 =====
-        if request.source == "app" and request.token:
+        if source == "app" and token:
             # 第三方 App token 认证
-            app_user = get_app_user(request.token)
+            app_user = get_app_user(token)
             if not app_user:
                 raise HTTPException(status_code=401, detail="无效的 App token")
             username = f"app_{app_user['userId']}"
@@ -470,15 +473,6 @@ async def chat(
                     # 将AI回复添加到用户的聊天历史
                     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(
                         message=assistant_message,  # AI回复消息
@@ -508,7 +502,7 @@ async def chat(
         # 捕获所有其他异常并转换为HTTP异常
         error_message = f"处理聊天请求时发生错误: {str(e)}"
         save_chat_log(
-            username=current_user.username,
+            username=username,
             question=request.messages[-1].content if request.messages else "",
             stream_mode=request.stream,
             status="error",