Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cookie在控制器中读取正确,但在中间件中读取不正确-Laravel_Laravel_Cookies_Middleware - Fatal编程技术网

Cookie在控制器中读取正确,但在中间件中读取不正确-Laravel

Cookie在控制器中读取正确,但在中间件中读取不正确-Laravel,laravel,cookies,middleware,Laravel,Cookies,Middleware,我试图设置cookie来定义用户首选的语言。我通过一个指向助手控制器的链接做到了这一点: /设置区域设置/{locale} 我知道这是正确的,因为如果我这样做: dd(Cookie::get('locale')); 它显示所选的正确区域设置。所以下一步是使用中间件在任何地方实际应用所选的语言环境,我将其命名为“SetLocale”: 但如果我执行 dd(Cookie::get('locale')); 在中间件中,它读取所有加扰的cookie。 所以我的问题是,它为什么这样做?我如何从这里正确

我试图设置cookie来定义用户首选的语言。我通过一个指向助手控制器的链接做到了这一点:

/设置区域设置/{locale}

我知道这是正确的,因为如果我这样做:

dd(Cookie::get('locale'));
它显示所选的正确区域设置。所以下一步是使用中间件在任何地方实际应用所选的语言环境,我将其命名为“SetLocale”:

但如果我执行

dd(Cookie::get('locale'));
在中间件中,它读取所有加扰的cookie。
所以我的问题是,它为什么这样做?我如何从这里正确读取cookie?

使用此命令从请求中获取cookie:

\Crypt::decrypt(Cookie::get('locale'))
或使用

\Crypt::decryptString(Cookie::get('locale'))

好的,esmaill的答案对我不起作用(得到了一个“unserialize():偏移量0处43字节的错误”错误),但它确实帮助我找到了解决问题的正确方向

我所做的只是将'locale'添加到EncryptCookies中间件的$except属性中,并重置cookie,现在它被正确读取

\Crypt::decrypt(Cookie::get('locale'))
\Crypt::decryptString(Cookie::get('locale'))