首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter Tank Auth 資料庫遷移後密碼驗證失敗解決方案

     編輯:PHP 相關知識

問題現象

使用 Tank Auth 權限庫的 CodeIgniter 專案,將資料庫遷移至新伺服器後,原有帳號密碼無法登入,提示驗證失敗。

根本原因

Tank Auth 使用 phpass 庫進行密碼雜湊。預設設定 $config['phpass_hash_portable'] = FALSE 會產生與系統架構綁定的雜湊值(如 64 位元與 32 位元系統產生的雜湊不同),導致跨伺服器遷移後驗證失效。

解決步驟

  1. 修改設定檔:編輯 application/config/tank_auth.php,將可攜性設定開啟:
    $config['phpass_hash_portable'] = TRUE;
  2. 本地重設密碼:在原本可登入的環境(或本機開發環境)使用舊帳號密碼登入系統,進入會員中心修改密碼。此時系統會以可攜性模式重新產生雜湊值。
  3. 遷移 users 資料表:將更新後的 users 資料表匯出,導入目標伺服器。
  4. 驗證登入:在新伺服器使用新密碼登入,驗證應成功通過。

原理說明

phpass 的 Portable Hashes 模式使用標準的 MD5 鹽值演算法,不依賴系統特定的 crypt() 行為,產生的雜湊值可在不同 PHP 版本、作業系統、硬體架構間通用。開啟此選項後,新建立的密碼雜湊即具備跨平台相容性。

預防建議

  • 專案初期即設定 phpass_hash_portable = TRUE,避免未來遷移麻煩。
  • 資料庫遷移前務必測試登入功能,納入部署檢查清單。
  • 若使用 Docker 容器化部署,確保基礎映像一致性,可減少此類問題。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved