Laravel - 如何解密cookie的价值

时间:2017-11-04 14:36:44

标签: php laravel laravel-5

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

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

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

但我需要在没有加密的情况下获得cookie的价值。

2 个答案:

答案 0 :(得分:10)

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

如果您需要手动解密任何值,以下操作将起到作用:

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

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

检查 EncryptCookies 中间件的代码,详细了解内部功能。

答案 1 :(得分:0)

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

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