我正在开发的网站包括一个邮件系统。我正在使用Crypt::()
加密表格中的邮件。用户收到消息并显示此错误:
exception 'Illuminate\Contracts\Encryption\DecryptException' with message 'MAC is invalid.'
in /home/forge/cvahimt.org/releases/20150601155111/vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php:147
我正在加密消息:
// Message
$message = Message::create(
[
'thread_id' => $thread->id,
'user_id' => Auth::user()->id,
'body' => Crypt::encrypt($input['message']),
]
);
app密钥在.env
文件中设置且尚未更改,消息是在错误发生之前发送的。表中的body
列的类型为TEXT
。
知道可能导致这种情况的原因吗?
答案 0 :(得分:1)
试试这个:
composer dump-autoload
composer clear-cache
然后,清除数据库中的所有种子并重新种植。
在这个过程的某个地方,如果有问题,问题应该会显现出来。
答案 1 :(得分:1)
在app.php
中,您可以看到以下行
'key' => env('APP_KEY', 'SomeRandomString')
有时env
会将'APP_KEY'
(引用:https://laracasts.com/discuss/channels/general-discussion/env-not-reading-variables-sometimes)值返回为空,因此在加密或解密时默认值将被视为"SomeRandomString"
。所以,你可以像
'key' => env('APP_KEY', 'xxxxxxxxxxxxx')
其中'xxxxxxxxxxxxx'
与.env
文件的APP_KEY
值完全匹配。