我写了一个用于子域本地化的包。但是突然解密 cookie 不再起作用了。
我的语言环境测试网站正在运行,但我需要取消保护它才能使用 Laravel 代客共享。现在,当我再次将其更改为代客安全时,我的网站不再工作。我得到错误异常:
unserialize(): Error at offset 0 of 2 bytes
Run Code Online (Sandbox Code Playgroud)
在
//Illuminate/Encryption/Encrypter.php
Row 149. return $unserialize ? unserialize($decrypted) : $decrypted;
Run Code Online (Sandbox Code Playgroud)
我不知道为什么。我没有更改我的 app_key,我删除了我页面的所有 cookie,但它仍然不起作用(并且在过去 3 周内运行良好)。
如果您查看此处或缩短的代码:
return decrypt(request()->cookie('tongue-locale'));
Run Code Online (Sandbox Code Playgroud)
你看到我正在解密我的 cookie 内容。如果你对我为什么需要解密我的 cookie 感到好奇,那是因为中间件“\App\Http\Middleware\EncryptCookies::class”稍后会启动。
有谁知道为什么它不起作用?
我不知道发生了什么,但我需要将代码更改为:
app('encrypter')->decrypt(request()->cookie(self::COOKIE), false);
Run Code Online (Sandbox Code Playgroud)
使用“false”时,反序列化将被忽略。但我仍然想知道为什么它不起作用。
如果你翻译这部分
return $unserialize ? unserialize($decrypted) : $decrypted;
Run Code Online (Sandbox Code Playgroud)
使用变量 $unserialize = true 和 $decrypted = "de" 很明显它失败了,但我想知道为什么它之前没有..
| 归档时间: |
|
| 查看次数: |
5512 次 |
| 最近记录: |