2017-08-10 49 views
1

我试图读取Laravel5.4中的cookie。所以我成功通过第三方授权服务器进行验证后得到了cookies。我不是在laravel5.4中制作cookie,但是我正在阅读从视图/前端发送给我的cookie值。我可以在Chrome调试器环境以及PHP全局变量$ _COOKIE中看到cookie的值。他们都设置正确。

但是,当我试图从控制器方法使用$ request-> cookie('key')来读取同一个cookie时,它什么也没有显示。我也尝试Cookie外观读取值,仍然没有。此控制器正在处理重定向路由,该路由在重定向到我的URL时由第三方oauth服务器和此服务器调用,并且还设置了Cookie。

我是不是在Laravel5.4的web.php文件中正确设置这个重定向url路径?这是它是如何在web.php定义如下:

路线::获得( '登录/ 1563 /回调', '验证\的LoginController @ handleProviderCallback');

当我倾销内容时请求对象为空,但$ _COOKIE有数据。

回答

3

Laravel的cookie类加密和解密cookie的值(请参见App\Http\Middleware\EncryptCookies中间件)。当你看到它没有设置的cookie时,它会尝试(并失败)解密它。

如果你有从外面Laravel一个cookie集,使用$_COOKIE与它的工作,或添加cookie的名字到$except阵列中app/Http/Middleware/EncryptCookies.php所以它不与混乱。

+0

ceejayoz - 顺便说一句,你可以请你提供一些解释你的第一段?我不太明白你想说什么。 – Andy

+1

@Andy默认情况下,Laravel加密所有Cookie。这也意味着它试图解密所有的cookie,甚至不是来自Laravel的。 当您尝试访问第三方cookie时,Laravel认为应该通过请求将其解密。解密的结果是无效的,所以你最终得到一个空字符串。 通过将Cookie添加到'$ except'数组中,您告诉Laravel应用程序您不希望对该特定的Cookie进行加密或解密。 –