Laravel - 如何解密cookie的值

Laravel - How decrypt value of cookie

您好,我需要解密 cookie 的值。 我创建和销毁的代码:

  public function setSession($id){
      Cookie::queue('userId', $id, 10000);
  }

  public function destroySession(){
      Cookie::queue(Cookie::forget('userId'));
  }

但我需要在不加密的情况下获取 cookie 的值。

在网络请求上下文中,cookie 通常由 EncryptCookies 中间件自动加密和解密。最简单的选择就是启用这个中间件(它在 Laravel 中默认启用)。

如果您需要手动解密任何值,可以使用以下方法:

// get the encrypter service
$encrypter = app(\Illuminate\Contracts\Encryption\Encrypter::class);

// decrypt
$decryptedString = $encrypter->decrypt($encryptedString);

查看 EncryptCookies 中间件的代码以了解有关其内部功能的更多信息。

默认情况下 Crypt::decrypt 尝试反序列化该值,而您的未序列化,这就是您收到错误的原因。您需要传递第二个参数,例如:

Crypt::decrypt(Cookie::get('userId'), false);