3.4 KiB
3.4 KiB
管理員登入修復報告
問題描述
用戶報告管理員帳號登入失敗,懷疑是 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$...
認證流程
- 用戶提交電子郵件和密碼
- 系統查詢用戶資料庫
- 使用 bcrypt 驗證密碼
- 生成 JWT Token
- 返回用戶信息和 Token
驗證腳本
創建了以下測試腳本來驗證修復:
scripts/test-admin-login.js
- 測試管理員登入scripts/test-password-verification.js
- 測試密碼驗證scripts/update-all-admin-passwords.js
- 更新管理員密碼
注意事項
- 安全性: 建議在生產環境中使用更強的 JWT_SECRET
- 密碼管理: 建議管理員在首次登入後更改密碼
- 環境變數: 確保
.env
文件正確配置 - 備份: 建議定期備份用戶資料庫
結論
✅ 問題已完全解決
- JWT_SECRET 已統一使用環境變數
- 所有管理員帳號都可以正常登入
- Token 生成和驗證功能正常
- 認證系統現在完全一致
用戶現在可以使用任何管理員帳號和密碼 Admin123!
成功登入系統。