[译] 使用Laravel访问前端Cookie

栏目: PHP · 发布时间: 5年前

内容简介:原文地址:在我们的应用程序中,我们可以在JS端设置cookie,但我们也希望在后端使用。我们可以使用在这篇文章中,我们关注现有的cookie。如果对如何从 JavasScript 处理它们感兴趣,请阅读文档。

原文地址: Accessing Front-End Cookies with Laravel

在我们的应用程序中,我们可以在JS端设置cookie,但我们也希望在后端使用。我们可以使用 $_COOKIE 全局魔术变量,但如果我们使用Laravel,我们会使用它提供的方法。让我们下 Laravel 中是如何使用的

在前端设置Cookie

在这篇文章中,我们关注现有的cookie。如果对如何从 JavasScript 处理它们感兴趣,请阅读文档。

现在,假设我们有一个带有“ is-collapsed ”键的现有cookie 。我们想检查后端的值,以便在服务器端执行某些操作。

Laravel和Cookies

我们可以通过 request()->cookie() 方法或使用 Cookie Facade 来访问我们的cookie 。

问题是,如果我们想要访问我们在前端设置的 cookie,我们会得到 null 。但是我们使用 $_COOKIE 变量,我们可以访问它,这证明 cookie 是存在的。那问题在什么地方呢?

默认情况下,框架带有用于加密cookie的中间件。如果我们从后端设置一个cookie,它会自动加密,因此Laravel可以读取它。从JS我们没有任何加密,这就是我们无法从框架中访问它们的原因。

如何解决这个问题?

app/Http/Kernel.php 中, 在 web 中间件分组中(5.2+),我们可以找到 EncryptCookies::class 行。通过注释这个中间件,可以关闭 cookie 的自动加密,但这种方法不是我们想要的解决方案。

建议的方法是使用中间件并添加一些不需要加密的排除项,Laravel无论怎样都应该访问它们。我们可以在 app/Http/Middlewares/EncryptCookies.php. 插入中间件的排除项。

/**
 * The names of the cookies that should not be encrypted.
 *
 * @var array
 */
protected $except = [
    'is-collapsed',
];
复制代码

通过将 cookie 的名称添加到 except 数组,我们可以使用 Cookie Facade 或 request()->cookie() 方法读取cookie 。

如果您对更多信息感兴趣,请查看文档或查看有关加密如何工作 的章节。


以上所述就是小编给大家介绍的《[译] 使用Laravel访问前端Cookie》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective Java

Effective Java

Joshua Bloch / Addison-Wesley Professional / 2018-1-6 / USD 54.99

The Definitive Guide to Java Platform Best Practices—Updated for Java 9 Java has changed dramatically since the previous edition of Effective Java was published shortly after the release of Jav......一起来看看 《Effective Java》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具