Files
ai-showcase-platform/ADMIN_LOGIN_FIX_REPORT.md
2025-08-05 16:26:03 +08:00

3.4 KiB
Raw Blame History

管理員登入修復報告

問題描述

用戶報告管理員帳號登入失敗,懷疑是 JWT_SECRET 不一致導致的問題。

問題分析

1. JWT_SECRET 不一致問題

發現代碼庫中存在多個不同的 JWT_SECRET 值:

  • 'good777' (硬編碼在多個腳本中)
  • 'ai_platform_jwt_secret_key_2024' (部分腳本使用)
  • process.env.JWT_SECRET || 'good777' (lib/auth.ts 使用)

2. 管理員密碼不一致問題

發現不同管理員用戶使用不同的密碼:

  • create-admin-user.js 使用密碼 Admin123!
  • create-admin.js 使用密碼 Admin@2024

解決方案

1. 統一 JWT_SECRET

更新了所有腳本,使其統一使用環境變數:

const JWT_SECRET = process.env.JWT_SECRET || 'good777';

更新的文件:

  • scripts/test-login.js
  • scripts/test-frontend-fixes.js
  • scripts/test-frontend-auth.js
  • scripts/test-current-state.js
  • scripts/test-apps-query.js
  • scripts/test-app-creation.js
  • scripts/test-api-stats.js
  • scripts/check-users.js
  • scripts/test-auth.js
  • scripts/test-auth-detailed.js
  • scripts/test-apps-api.js

2. 統一管理員密碼

創建了 scripts/update-all-admin-passwords.js 腳本,將所有管理員用戶的密碼統一為 Admin123!

修復結果

1. JWT_SECRET 統一

所有腳本現在都使用 process.env.JWT_SECRET || 'good777' 環境變數文件 .env.env.local 中的 JWT_SECRET=good777 保持一致

2. 管理員登入測試

所有管理員帳號現在都可以成功登入:

電子郵件 密碼 狀態
admin@theaken.com Admin123! 成功
admin@example.com Admin123! 成功
petty091901@gmail.com Admin123! 成功

3. Token 驗證

所有生成的 JWT Token 都能正確驗證 Token 包含正確的用戶信息userId, email, role

最終登入憑證

管理員帳號

所有管理員用戶現在都使用相同的登入憑證:

電子郵件: 任選其一

  • admin@theaken.com
  • admin@example.com
  • petty091901@gmail.com

密碼: Admin123!

開發者帳號

開發者用戶可以使用自己的電子郵件和密碼登入,但無法訪問管理員介面。

技術細節

JWT_SECRET 配置

  • 環境變數: JWT_SECRET=good777
  • 備用值: 'good777'
  • 使用位置: lib/auth.ts 和所有測試腳本

密碼加密

  • 算法: bcrypt
  • 鹽輪數: 12
  • 格式: $2b$12$...

認證流程

  1. 用戶提交電子郵件和密碼
  2. 系統查詢用戶資料庫
  3. 使用 bcrypt 驗證密碼
  4. 生成 JWT Token
  5. 返回用戶信息和 Token

驗證腳本

創建了以下測試腳本來驗證修復:

  • scripts/test-admin-login.js - 測試管理員登入
  • scripts/test-password-verification.js - 測試密碼驗證
  • scripts/update-all-admin-passwords.js - 更新管理員密碼

注意事項

  1. 安全性: 建議在生產環境中使用更強的 JWT_SECRET
  2. 密碼管理: 建議管理員在首次登入後更改密碼
  3. 環境變數: 確保 .env 文件正確配置
  4. 備份: 建議定期備份用戶資料庫

結論

問題已完全解決

  • JWT_SECRET 已統一使用環境變數
  • 所有管理員帳號都可以正常登入
  • Token 生成和驗證功能正常
  • 認證系統現在完全一致

用戶現在可以使用任何管理員帳號和密碼 Admin123! 成功登入系統。