feat: v2.0.0 完整代码优化升级

🔴 高优先级 (6项全部完成):
- 数据库事务支持 (InsertMessageWithLog)
- SQL注入修复 (参数化查询)
- 配置验证 (Validate方法)
- 会话密钥强化 (长度验证)
- 签名验证增强 (SignVerificationResult)
- 密码哈希支持 (bcrypt)

🟡 中优先级 (15项全部完成):
- 连接池配置 (MaxOpenConns, MaxIdleConns)
- 查询优化 (范围查询, 索引)
- 健康检查增强 (/health 端点)
- API版本控制 (/api/v1/*)
- 认证中间件 (RequireAuth, RequireAPIAuth)
- 定时任务优化 (robfig/cron)
- 配置文件示例 (config.example.yaml)
- 常量定义 (config/constants.go)
- 开发文档 (DEVELOPMENT.md)

🟢 低优先级 (9项全部完成):
- Docker支持 (Dockerfile, docker-compose.yml)
- Makefile构建脚本
- 优化报告 (OPTIMIZATION_REPORT.md)
- 密码哈希工具 (tools/password_hash.go)
- 14个新文件
- 30项优化100%完成

版本: v2.0.0
This commit is contained in:
OpenClaw Agent
2026-02-08 18:59:29 +08:00
parent 06720d3438
commit 1da899a0f4
22 changed files with 1523 additions and 101 deletions

View File

@@ -2,6 +2,7 @@ package auth
import (
"encoding/hex"
"fmt"
"log"
"net/http"
"time"
@@ -22,17 +23,27 @@ const (
)
// Init 初始化会话存储
func Init(secretKey string) {
// 支持 hex 和 base64 格式的密钥
func Init(secretKey string) error {
if secretKey == "" {
return fmt.Errorf("安全密钥不能为空")
}
// 支持 hex 格式的密钥
key := []byte(secretKey)
if len(key) == 64 { // hex 格式 32 字节
var err error
key, err = hex.DecodeString(secretKey)
if err != nil {
log.Printf("警告: hex 解码失败,使用原始密钥: %v", err)
if len(key) > 64 && len(secretKey) >= 64 { // 可能是 hex 格式 32 字节
if decodedKey, err := hex.DecodeString(secretKey); err == nil {
key = decodedKey
log.Printf("使用 hex 解码密钥")
} else {
log.Printf("hex 解码失败,使用原始密钥: %v", err)
}
}
// 检查密钥长度至少16字节
if len(key) < 16 {
return fmt.Errorf("安全密钥长度不足至少需要16字节当前: %d 字节)", len(key))
}
store = sessions.NewCookieStore(key)
store.Options = &sessions.Options{
Path: "/",
@@ -43,6 +54,8 @@ func Init(secretKey string) {
// Secure: true,
}
log.Printf("会话存储初始化完成,密钥长度: %d 字节", len(key))
return nil
}
// GetStore 获取会话存储