您好我需要解密cookie的值。 我创建和销毁的代码:
public function setSession($id){
Cookie::queue('userId', $id, 10000);
}
public function destroySession(){
Cookie::queue(Cookie::forget('userId'));
}
但我需要在没有加密的情况下获得cookie的价值。
答案 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);