🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Cookie 管理(Cookies Management) # Cookie 管理(Cookies Management) [Cookies](http://en.wikipedia.org/wiki/HTTP_cookie) 是一个将数据存储在客户端的有效途径,这样即使用户关闭了TA的浏览器也能获取这些数据。[*Phalcon\\Http\\Response\\Cookies*](#) 作为全局的cookies包。在请求执行的期间,Cookies存放于这个包里,并且在请求结束时会自动发送回给客户端。 ### 基本使用(Basic Usage) 你可以在应用中任何可以访问服务的部分,通用使用“cookies”服务来设置/获取cookie 。 ``` <pre class="calibre14">``` <?php use Phalcon\Mvc\Controller; class SessionController extends Controller { public function loginAction() { // 检测cookie之前有没被设置过 if ($this->cookies->has('remember-me')) { // 获取cookie $rememberMe = $this->cookies->get('remember-me'); // 获取cookie的值 $value = $rememberMe->getValue(); } } public function startAction() { $this->cookies->set('remember-me', 'some value', time() + 15 * 86400); } public function logoutAction() { // Delete the cookie $this->cookies->get('remember-me')->delete(); } } ``` ``` ### Cookie 的加密和解密(Encryption/Decryption of Cookies) 默认情况下,cookie会在返回给客户端前自动加密并且在接收到后自动解密。在保护机制下,即使未验证的用户在客户端(浏览器)查看了cookie的内容,也无妨。即使这样,敏感的数据还是不应该存放到cookie。 你可以通过以下方式禁用加密: ``` <pre class="calibre14">``` <?php use Phalcon\Http\Response\Cookies; $di->set('cookies', function () { $cookies = new Cookies(); $cookies->useEncryption(false); return $cookies; }); ``` ``` 使用加密的话,必须在“crypt”服务中设置一个全局的key: ``` <pre class="calibre14">``` <?php use Phalcon\Crypt; $di->set('crypt', function () { $crypt = new Crypt(); $crypt->setKey('#1dj8$=dp?.ak//j1V$'); // 使用你自己的key! return $crypt; }); ``` ``` > 将未加密且包含了复杂对象结构、结果集、服务信息等等的cookie数据发送给客户端,可能会暴露应用内部的细节给外界,从而被黑客利用、发起攻击。如果你不想使用加密,我们强烈建议你只返回基本的cookie数据,如数字或者小串的文字。 | - [索引](# "总目录") - [下一页](# "生成 URL 和 路径(Generating URLs and Paths)") | - [上一页](# "返回响应(Returning Responses)") |