本篇文章主要講述了laravel報錯The MAC is invalid的解決辦法,具有一定的參考價值,有興趣的朋友可以學習一下。
在使用laravel框架進行網站開發時,我們會使用laravel的Crypt類別對使用者的密碼進行加密來達到資訊加密的目的,Crypt類別會對資料加密時會依賴APP_KEY,所以當更換了APP_KEY時,再在登陸校驗時使用Crypt::decrypt()函式時,會回報The MAC is invalid.的錯誤。
所以解決的方法就是透過原來的APP_KEY解密取得到使用者最原始的數據,然後把使用者資料依照新的APP_KEY重新加密存入資料庫。
手冊說明如下:
設定:
在使用Laravel 的加密功能前,你需要先為config/app.php設定檔中的APP_KEY參數設定一個值,這個值就是一個包含32 個隨機字元的字串。如果這個值沒有正確設置,所有 Laravel 加密的資料都是不安全的。
基本用法:
透過 Crypt facade 可以加密一段資料。所有加密採用的都是 OpenSSL 和 AES-256-CBC cipher。並且,所有加密過的資料都會被賦予一個「資訊驗證碼」(MAC),以防加密後所得到的字串被竄改。
由此說明encrypt產生的值和APP_KEY有關,並且加密資料後會賦予一個mac用在解密時的安全驗證,由於專案更換環境後需要重新產生APP_KEY,所以之前產生的資料在新的環境無法解密。
以上報錯說MAC值無效並不是電腦mac位址,而是laravel的encrypt加密與其app_key有關,並且為每一個資料賦予了一個特殊的mac驗證碼。
更換環境後需要先重新產生APP_KEY,然後資料庫中使用encrypt加密資料需要重新加密。
相關教學:PHP影片教學
#以上是怎麼解決laravel報錯The MAC is invalid的詳細內容。更多資訊請關注PHP中文網其他相關文章!