使用 Tank Auth 權限庫的 CodeIgniter 專案,將資料庫遷移至新伺服器後,原有帳號密碼無法登入,提示驗證失敗。
Tank Auth 使用 phpass 庫進行密碼雜湊。預設設定 $config['phpass_hash_portable'] = FALSE 會產生與系統架構綁定的雜湊值(如 64 位元與 32 位元系統產生的雜湊不同),導致跨伺服器遷移後驗證失效。
application/config/tank_auth.php,將可攜性設定開啟:
$config['phpass_hash_portable'] = TRUE;
users 資料表匯出,導入目標伺服器。phpass 的 Portable Hashes 模式使用標準的 MD5 鹽值演算法,不依賴系統特定的 crypt() 行為,產生的雜湊值可在不同 PHP 版本、作業系統、硬體架構間通用。開啟此選項後,新建立的密碼雜湊即具備跨平台相容性。
phpass_hash_portable = TRUE,避免未來遷移麻煩。