Laravel - 如何解密cookie的价值

J. *_*ses 2 php laravel laravel-5

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

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

  public function destroySession(){
      Cookie::queue(Cookie::forget('userId'));
  }
Run Code Online (Sandbox Code Playgroud)

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

jed*_*ylo 12

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

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

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

// decrypt
$decryptedString = $encrypter->decrypt($encryptedString);
Run Code Online (Sandbox Code Playgroud)

检查EncryptCookies中间件的代码,以了解有关内部功能的更多信息.

  • @AhmedNumaan你可能想要使用`\ Crypt :: decryptString($ encryptedString)`代替. (6认同)
  • 这给了我500服务器错误:`[2018-11-13 05:52:26] local.ERROR:未捕获ErrorException:unserialize():C:\ xampp\htdocs\bflysoft_ico\vendor中2字节的偏移量0出错\ laravel \框架的\ src \照亮\加密\ Encrypter.php:149` (2认同)

use*_*159 8

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

Crypt::decrypt(Cookie::get('userId'), false);
Run Code Online (Sandbox Code Playgroud)