为什么在中间件中设置的加密cookie也返回字符串长度?

时间:2019-06-16 20:02:34

标签: php laravel

我正在关注this tutorial,在其中,您可以从中间件设置cookie。

因为设置Cookie的自定义中间件早于EncryptCookies中间件,所以我遵循了本教程中的建议来手动加密cookie:

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

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

}

但是,如上为$name = foo设置此cookie,然后使用cookie外观检索它时,变量类型和长度将附加到值上:

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

从追溯到laravel中内置的cookie加密来看,我认为这可能与序列化有关,但是我似乎无法在设置或检索cookie中找到正确的选项以实现预期的行为:

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

从修补程序中进行测试,然后对复制粘贴的cookie值使用decrypt()手动进行操作,通常是 set 设置,问题出在检索上。

1 个答案:

答案 0 :(得分:0)

经过反复的尝试和错误之后,我得出结论,在EncryptCookies中间件中,默认值为protected static $serialize = false;。这没有包含在我的crypto()函数中。检索Cookie时,以下代码可以正常工作:

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

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

}