在Laravel 5中间件中获取cookie

问题描述 投票:0回答:2

我正试图从Laravel 5.3中的中间件中检索一个cookie,但似乎$ request-> cookie('language')是空的。我猜它只是在中间件运行后设置的。

我在某处读到了我应该使用\ Cookie :: queued('language'),但它仍然是空的。

我唯一的选择是使用$ _COOKIE变量吗?

laravel cookies laravel-5 session-cookies
2个回答
3
投票

你什么时候设置这个cookie?

请记住,cookie存储在浏览器中,因此用户需要获取响应,以便您以后能够检索cookie。

在通过成功发送给用户的响应设置cookie之后,您应该能够获取cookie。还要记住,如果你使用dd(),那就不会让cookie被创建,因为它会跳过发送给用户的所有cookie头。

尝试从中间件获取cookie可能遇到的另一个问题是它可能无法自动解密,因此您必须自己完成。

例:

\Crypt::decrypt(Cookie::get('language'))

1
投票

如果有人在2019年使用Laravel 5.8遇到这个问题: 你需要使用\Crypt::decryptString(Cookie::get('language'))\Crypt::decrypt(Cookie::get('language'), false)。 否则它将尝试反序列化字符串,然后发生奇怪的事情。

© www.soinside.com 2019 - 2024. All rights reserved.