本篇文章主要講述了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視頻教程