解密Laravel会话Cookie时unserialize()错误

时间:2019-02-23 03:10:18

标签: laravel laravel-5 encryption cookies laravel-5.7

我正在尝试解密Laravel 5.7会话cookie(在请求中传递),以对websocket中的用户进行身份验证。

use Illuminate\Support\Facades\Crypt;
...
$cookie = $request->get('session_cookie')
$sessionId = Crypt::decrypt($cookie);

但是我总是得到:

unserialize(): Error at offset 0 of 40 bytes

我已经尝试清除客户端上的cookie,重新启动服务器并使用重置应用程序密钥

php artisan key:generate

1 个答案:

答案 0 :(得分:1)

Laravel从V5.6.30更改了其处理cookie的方式,以提高安全性。可能是您尝试解密未序列化的内容,反之亦然。您可以尝试几件事:

$sessionId = Crypt::decrypt($cookie, false);

或者,在中间件app\Http\Middleware\EncryptCookies.php中,您可以将其翻转以进行测试:

添加:protected static $serialize = true;