我正在关注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 设置,问题出在检索上。
答案 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));;
}