2015-12-23 4 views
0

Я устанавливаю cookie на стороне сервера, используя класс cookie yii2 с кодом ниже, но когда я получаю его на стороне клиента с javascript, он печатает в другом формате, например 3ab2e6b31664352c0398b57bd98720da925d1254d476f4d7c4e7c29ce71c0c14a:2:{i:0;s:3:"uid";i:1;i:1;}. В чем причина и что такое правильный способ получения значения uid?Yii2 хранить файлы cookie в другом формате

  $cookies = Yii::$app->response->cookies; 
      if (!$cookies->has('uid')){ 
       $cookies->add(new \yii\web\Cookie([ 
        'name' => 'uid', 
        'value' => Yii::$app->user->identity->id, 
        'httpOnly' => false, 
       ]));     
      } 

ответ

2

Это делается для проверки файлов cookie, которая защищает файлы cookie от модификации на стороне клиента.

Ваша строка сериализованная Cookie объект, подписанный с [юй \ Web \ Request :: $ cookieValidationKey} (http://www.yiiframework.com/doc-2.0/yii-web-request.html# $ cookieValidationKey-деталь) с использованием hash_hmac PHP функции.

Подробное описание вы найдете в Guide - Sessions and Cookies.

Настоятельно рекомендуется не отключать проверку файлов cookie. Если вы все еще хотите использовать cookie без знака, установите его вручную, используя функцию setcookie(). Обратите внимание, что он будет недоступен в Yii::$app->request->cookie, и вы должны получить к нему доступ, хотя $_COOKIE