【问题标题】:The mac is invalid laravelmac 是无效的 laravel
【发布时间】:2018-07-15 14:20:33
【问题描述】:

我参与了一个新的 laravel 项目并尝试运行单元测试(通过我朋友的项目),但我遇到了一些失败。我查看了 laravel.log 并多次看到这个:

testing.ERROR: Illuminate\Contracts\Encryption\DecryptException: MAC 无效。在 /mnt/c/xampp/htdocs/erx/vendor/laravel/framework/src/Illuminate/Encryption/BaseEncrypter.php:48

我尝试清除缓存,并运行:
php artisan key:generate
但这并没有解决问题。还有什么我应该尝试的吗?

【问题讨论】:

  • 您的 .env 是否包含有效的 APP_KEY ?
  • 它确实包含密钥,我怎么知道它是否有效
  • 你运行的是什么版本的 PHP?
  • 您很可能正在尝试使用新生成的密钥解密旧密码(用另一个密钥加密)。可能恢复旧密钥或重置密码。
  • php 7.0 - 我应该恢复哪些密码?

标签: php laravel


【解决方案1】:

如果您有由Crypt::encryptString($plain_text) 加密的数据 然后你格式化你的电脑 您必须通过此方法从数据库中删除所有散列字段, 然后再次对其进行哈希处理。 这为我解决了问题, 我的意思是问题在于,如果你有一个通过这种方法散列的字段,你必须删除它散列,因为它与计算机不同

【讨论】:

    【解决方案2】:

    当您在开发机器上设置新实例并使用一个 APP_KEY 打开浏览器然后重新生成它并尝试刷新页面时,我可能会发生这种情况。

    如果是这样:尝试清除浏览器中的 cookie。它将擦除会话并使用新创建的密钥自动创建新的会话。

    【讨论】:

      【解决方案3】:

      您的 APP_KEY 可能与本地/远程不同。 Crypt::decryptString 然后抛出 MAC is invalid 错误。

      当您清理浏览器中的缓存和 cookie 时,您应该能够摆脱这种情况。

      还要确保密钥相同。

      【讨论】:

      • 和什么一样?我在 .env 中有密钥,然后在 config/app.php 他们喜欢看起来像这样:'key' => env('APP_KEY'),
      • 你能生成一个新的吗? :)
      猜你喜欢
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      相关资源
      最近更新 更多