yii2-cookie

相关文章:

yii 中每个 cookie 都是 yii\web\Cookie 的对象。

yii\web\Requestyii\web\Response 都通过 cookies 属性来维护一个 cookies 集合。

  • yii\web\Requestcookie 集合代表通过请求提交的。
  • yii\web\Responsecookie 集合代表发送给用户的。

cookie 的 readsent 应该在 controller 内进行。

Reading Cookies

$cookies = Yii::$app->request->cookies;

if(($cookie = $cookies->get('language')) !== null){
    $language = $cookie->value;
}

// 或者像数组一样访问
if(isset($cookies['language']){
    $language = $cookies['language']->value;
}

Sending Cookies

$cookies = Yii::$app->reponse->cookies;

$cookies->add(new \yii\web\Cookie([
    'name' => 'language',
    'value' => 'zh-CN',
]));

$cookies->remove('language');

为了安全考虑,yii\web\Cookie::httpOnly 的默认值为 true。

Cookie Validation

当通过 request 组件读取 cookie,或是通过 response 组件发送 cookie,扩展的 cookie 通过给每个cookie签发一个哈希字符串来告知服务端 cookie 是否在客户端被修改,如果被修改,通过 request 组件的 cookie collection cookie 集合访问不到该 cookie。

Cookie Validation 默认启用。

return [
    'components' => [
        'request' => [
            'cookieValidationKey' => 'php init随机生成',
        ]
    ]
];