gpt4 book ai didi

php - Laravel Cookies 奇怪的行为 - 总是设置相同的值

转载 作者:行者123 更新时间:2023-12-04 01:56:29 27 4
gpt4 key购买 nike

我在 Laravel 5.6 中设置 cookie 时遇到问题。我目前正在使用 Facebook 登录,除了访问 token 无法正确存储在 Cookie 中之外,一切都按预期工作。出于某种原因,它一直存储一个我不熟悉的值,我也不知道为什么。

为了对此进行测试,我修改了我的回调函数以设置测试 cookie,并且发生了相同的行为。

这是我正在调用的路线:

Route::get('{provider}/callback', 'Auth\LoginController@handleProviderCallback');

这是我的 handleProviderCallback 方法:

public function handleProviderCallback(string $provider)
{
Cookie::queue(Cookie::make('fb', 'test', 1000, '/', config('session.domain'), config('session.secure'), config('session.http_only')));
return redirect('/');
}

这是随后设置为 fb 的 cookie:eyJpdiI6IkFROTRzU2ZhTGQwXC9DOHZoR3lqVDZnPT0iLCJ2YWx1ZSI6ImpqWE8wSVpDRzBzT1p2WGxPdE5pYlE9PSIsIm1hYyI6IjA5NzYxODQ0MmFkZmE2NDQ1YmU5Zjg2Y2NmNjU1N2RhZmVmNjcxZjJmYjhmZmViMWEwZGU5NTE5ZDYxMWY2ZjAifQ==

当然,我已经使用实际值对此进行了尝试,这就是为什么我现在恢复到仅测试值以查看发生了什么的原因。我已尝试清除所有 cookie 和缓存,并在 Chrome 和 Safari 中都尝试过。

为什么它总是设置一个 eyJ... 值而不是我告诉它的值?

最佳答案

Laravel 默认使用 App\Http\Middleware\EncryptCookies 对所有 cookie 进行加密和 base64 编码,所以当你对字符串进行 base64 解码时你会得到

{"iv":"AQ94sSfaLd0\/C8vhGyjT6g==","value":"jjXO0IZCG0sOZvXlOtNibQ==","mac":"097618442adfa6445be9f86ccf6557dafef671f2fb8ffeb1a0de9519d611f6f0"} 

这是加密数据,实际上只有jjXO0IZCG0sOZvXlOtNibQ==是加密的,其余只是用于用APP_KEY解密的元数据。另外值 jjXO0IZCG0sOZvXlOtNibQ== 是 base64 编码的,解码后你得到 5ІBKf:bm,这是真正的加密值。

Note: eyJ base64 decoded is {" which is beginning of JSON.

您可以在这个答案https://stackoverflow.com/a/49445587/1564365 中阅读更多有关应用程序 key /Laravel 加密的内容。 .


您可以通过设置 $except = ['fb'] 在 App\Http\Middleware\EncryptCookies 中间件中为测试(我的意思是调试)禁用加密,或者只是从 kernel.php 中删除中间件(将其注释掉!,稍后在生产中取消注释)。

关于php - Laravel Cookies 奇怪的行为 - 总是设置相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50238695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com