Skip to content

RabbitMQ 和登入驗證碼更新說明 支援異地安全驗證 #135

@WeChatPadPro

Description

@WeChatPadPro

RabbitMQ 和登入驗證碼更新說明

🔄 RabbitMQ 優化更新

1. 連線管理優化

  • 智慧重連機制:只在連線確實斷開時才重連,避免頻繁重連
  • 連線健康檢查:即時監控連線狀態,自動檢測連線健康度
  • 心跳監控:新增心跳時間記錄,超過 10 秒無心跳視為連線不健康
  • 並發安全:使用互斥鎖確保重連過程的執行緒安全

2. 錯誤處理改進

  • 精確錯誤識別:只對包含 "connection" 或 "channel" 的錯誤進行重連
  • 重試機制:連線失敗後自動重試一次
  • 詳細日誌:新增推送編號,方便追蹤訊息推送狀態

3. 效能優化

  • 跳過 Redis 操作:新增設定選項,可跳過 Redis 操作以提高效能
  • 佇列宣告優化:使用更安全的佇列宣告方式
  • 訊息持久化:確保伺服器重啟後訊息不丟失

🔐 登入驗證碼流程更新

1. 新增自動驗證碼處理 API

AutoLoginVerifyCodeApi - 自動處理驗證碼

POST /api/login/verify/auto

功能特點:

  • 自動取得 ticket:使用者無需提供 ticket,系統自動從 Redis 取得
  • 自動補全 data62:若 data62 為空,自動依據裝置資訊生成
  • 多重 ticket 取得:優先從 Redis 取得,失敗後從狀態快取取得
  • 智慧參數驗證:自動檢查必要參數,提供友善錯誤提示

LoginVerifyCodeApi - 手動驗證碼處理

POST /api/login/verify/manual

功能特點:

  • 手動 ticket 支援:支援使用者手動提供 ticket
  • 自動 ticket 補全:若未提供 ticket,自動從多個來源取得
  • 多重資料來源:從 Redis、狀態快取、使用者資訊、連線管理器等多個來源取得 ticket
  • 完整參數驗證:確保所有必要參數都已提供

2. 驗證碼處理流程

步驟 1:掃碼登入

# 取得登入二維碼
POST /api/login/qr/new
{
  "proxy": "http://proxy:port",  // 可選:代理設定
  "deviceName": "iPhone",        // 可選:裝置名稱
  "deviceId": "device_id"        // 可選:裝置 ID
}

步驟 2:檢查登入狀態

# 檢查掃碼狀態
GET /api/login/status?key=your-uuid

返回狀態說明:

  • code: 200 - 掃碼成功,等待確認
  • code: -3 - 需要驗證碼,返回 ticket
  • code: 300 - 二維碼不存在或已過期

步驟 3:提交驗證碼(自動模式)

# 自動處理驗證碼(推薦)
POST /api/login/verify/auto?key=your-uuid
{
  "uuid": "your-uuid",
  "code": "123456"  // 驗證碼
}

步驟 4:提交驗證碼(手動模式)

# 手動處理驗證碼
POST /api/login/verify/manual?key=your-uuid
{
  "uuid": "your-uuid",
  "code": "123456",     // 驗證碼
  "ticket": "ticket",   // 可選:手動提供 ticket
  "data62": "data62"    // 可選:手動提供 data62
}

3. Ticket 取得策略

優先順序:

  1. Redis 快取db.GetTicketForKey(uuid)
  2. 狀態快取db.GetCheckStatusCache(uuid).Ticket
  3. 使用者資訊userInfo.Ticket
  4. 連線管理器:從活躍連線中取得 ticket

自動補全策略:

  • data62 自動生成:依據裝置 IMEI 自動生成 data62
  • ticket 自動取得:從多個資料來源自動取得 ticket
  • 參數驗證:確保所有必要參數都已提供

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions