Почему зашифрованный файл cookie, установленный в промежуточном программном обеспечении, также возвращает длину строки? - PullRequest
0 голосов
/ 16 июня 2019

Я следую этому учебнику , в рамках которого вы устанавливаете куки из промежуточного программного обеспечения.

Поскольку мое специальное промежуточное программное обеспечение, в котором установлен файл cookie, находится до промежуточного программного обеспечения EncryptCookies, я следую рекомендации в руководстве по шифрованию cookie вручную:

if(!$request->hasCookie('referral')){

   return redirect($path)
   ->withCookie(cookie('referral', encrypt($name), 60*24*14));;

}

Однако, если этот файл cookie установлен, как указано выше для $name = foo, а затем извлечен с использованием фасада файла cookie - тип и длина переменной добавляются к значению:

dd(\Cookie::get('referral')) //Returns "s:3:"foo";"

Из-за отслеживания встроенного в laravel шифрования cookie я думаю, что это, вероятно, связано с сериализацией, но я не могу найти правильный вариант при установке или получении cookie для ожидаемого поведения:

dd(\Cookie::get('referral')) //Expected to return "foo"`

После тестирования в tinker и ручного использования decrypt() для значения cookie, вставленного при копировании, оно обычно устанавливается , и проблема заключается в получении.

1 Ответ

0 голосов
/ 17 июня 2019

После долгих проб и ошибок в работе, я выяснил, что в промежуточном программном обеспечении EncryptCookies есть значение по умолчанию protected static $serialize = false;. Это не было включено в мою функцию encrypt (). Следующий код работает, как и ожидалось, при получении куки:

if(!$request->hasCookie('referral')){

   return redirect($path)
   ->withCookie(cookie('referral', encrypt($name, false), 60*24*14));;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...