我试图从Laravel 5.3中的中间件检索cookie,但似乎$ request-> cookie('语言')为空。我猜测它只是在中间件运行后设置的。
我在某处读到了我应该使用\ Cookie ::排队('语言'),但它仍然是空的。
我唯一的选择是使用$ _COOKIE变量吗?
答案 0 :(得分:3)
您何时设置此Cookie?
请记住,cookie存储在浏览器中,因此用户需要获取响应,以便您以后能够检索cookie。
您应该能够在成功发送给用户的响应设置cookie后获取cookie。还要记住,如果你使用dd(),那就不会让cookie被创建,因为它会跳过所有cookie头被发送给用户。
尝试从中间件获取Cookie时可能遇到的另一个问题是,它可能无法自动解密,因此您必须自己进行解密。
示例:
\Crypt::decrypt(Cookie::get('language'))
答案 1 :(得分:1)
如果有人在2019年使用Laravel 5.8遇到此问题:
您将需要使用handleHardwareBack = () => {
this.props.navigation.goBack(null)
console.log(" ********** This is called ************ ");
return true;
}
或\Crypt::decryptString(Cookie::get('language'))
。
否则它将尝试反序列化字符串,然后发生奇怪的事情。