🎨 优化模型配置 && 新增apikey功能 && 完善通用接口
This commit is contained in:
52
server/middleware/ai_auth.go
Normal file
52
server/middleware/ai_auth.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"git.echol.cn/loser/ai_proxy/server/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var aiApiKeyService = service.ServiceGroupApp.AppServiceGroup.AiApiKeyService
|
||||
|
||||
// AiAuth AI接口鉴权中间件
|
||||
func AiAuth() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
// 从请求头获取 Authorization
|
||||
authHeader := c.GetHeader("Authorization")
|
||||
if authHeader == "" {
|
||||
c.JSON(http.StatusUnauthorized, gin.H{
|
||||
"error": gin.H{
|
||||
"message": "未提供API密钥",
|
||||
"type": "invalid_request_error",
|
||||
"code": "missing_api_key",
|
||||
},
|
||||
})
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// 提取 API Key (支持 "Bearer sk-xxx" 和 "sk-xxx" 两种格式)
|
||||
apiKey := strings.TrimPrefix(authHeader, "Bearer ")
|
||||
apiKey = strings.TrimSpace(apiKey)
|
||||
|
||||
// 验证 API Key
|
||||
keyInfo, err := aiApiKeyService.ValidateApiKey(apiKey)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusUnauthorized, gin.H{
|
||||
"error": gin.H{
|
||||
"message": err.Error(),
|
||||
"type": "invalid_request_error",
|
||||
"code": "invalid_api_key",
|
||||
},
|
||||
})
|
||||
c.Abort()
|
||||
return
|
||||
}
|
||||
|
||||
// 将密钥信息存入上下文
|
||||
c.Set("ai_api_key", keyInfo)
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user