Phalcon Cookie 管理
Cookies是存储在浏览器中的小文本文件,它保存了所有与用户身份有关的信息,一旦用户浏览了不同的页面,这些信息就会被用来验证他们的身份。
有两种不同类型的Cookies
会话 Cookie: 这些类型的cookies会留在浏览器上并保留信息,直到浏览器关闭,一旦打开浏览器,它将被视为同一用户的新会话。
持久性 Cookie: 拥有指定的生命周期,并在生命周期内保留在浏览器中,那些使用持久性 cookie 的网站会跟踪每个用户,即使用户关闭了浏览器。
现在让我们讨论 cookie 在 Phalcon 中是如何工作的。
Phalcon 中的Cookie
Phalcon使用Phalcon\Http\Response\Cookies作为cookies的全局存储,在向服务器发送请求时,Cookie被存储在Phalcon中。
以下是设置Cookie的语法:
$this->cookies->set( "<cookie-name>", "<cookie-value>", time );
使用以下代码,我们将在用户登录 Web 应用程序时创建用户的 cookie:
<?php class UsersController extends \Phalcon\Mvc\Controller { public function indexAction() { if ($this->cookies->has("login-action")) { // 获取cookie $loginCookie = $this->cookies->get("login-action"); // 获取cookie的值 $value = $loginCookie->getValue(); echo($value); } $this->cookies->set( "login-action", "abc", time() + 15 * 86400 ); } }
加密的 cookie 将作为输出显示:
解释
名为 "loginAction "的cookie已被创建,其值为 "abc"。
indexAction 方法检查该cookie是否存在,并相应地打印出该值。
Cookie 加密
Phalcon中的Cookies在作为请求发送到服务器之前是经过加密的,一旦我们从服务器得到适当的回应,就会解密。这保证了授权用户的安全。
尽管有加密和解密的功能,我们始终建议避免在cookies中存储敏感数据,cookies加密的配置包含在services.php文件中。
/** * Enable encryption key for setting values of cookies */ $di->set( "cookies", function () { $cookies = new Cookies(); $cookies->useEncryption(false); return $cookies; } ); /** * Set encryption key */ $di->set( "crypt", function () { $crypt = new Crypt(); $crypt->setKey('AED@!sft56$'); // 使用唯一的密钥! return $crypt; } );
注意:
始终建议在向服务器发送 cookie 时使用加密;
如果不使用加密,所有内部应用程序都将暴露给攻击者;
建议只在 cookie 中存储必要的小数据和文字。