У меня есть проект, который аутентифицирует пользователя с помощью файлов cookie, таких как token_ и refreshToken_, и промежуточное ПО, которое перехватывает мои маршруты и проверяет, зарегистрирован ли пользователь или нет.
В моем промежуточном программном обеспечении, когда мне нужно обновить token_, у меня есть следующий код:
namespace App\Http\Middleware\VerifyAccessToken
$cookie_name = "token_";
$cookie_value = $obj->access_token;
$expires_in = $obj->expires_in;
$time = time() + $expires_in; // 3600 = 1 hora
$path = "/";
$domain = env('COOKIE_DOMAIN');
setcookie($cookie_name, $cookie_value, $time, $path, $domain, false, true);
$cookie_name = "refreshToken_";
$cookie_value = $obj->refresh_token;
setcookie($cookie_name, $cookie_value, $time + 3600, $path, $domain, false, true);
return $next($request);
Работает вроде нормально, но проблема в следующем:
После того, как промежуточное программное обеспечение перехватило мой маршрут и обновило файл cookie, запрос был передан его контроллеру, но там я не могу получить доступ к файлу cookie с помощью $_COOKIE['token_'] и получаю сообщение об ошибке, но если я смотрю в инспекторе Chrome, файл cookie есть и перезагружаю страницу (F5) я могу получить доступ к куки в контроллере
Есть ли у меня метод доступа к файлу cookie в контроллере без необходимости переходить к представлению раньше?
laravel обрабатывает файлы cookie по-разному, получение файла cookie — это $value = $request->cookie('name');
См. Также ответ/подход, специфичный для Laravel, в частности, бит «Laravel поддерживает извлечение файлов cookie в памяти через очередь()»: stackoverflow.com/questions/29836332/…






Чтобы прочитать значение Cookie в Laravel, вам нужно использовать:
$token = Cookie::queued('token_');
dd($token->getValue());
https://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Cookie.html
Возможный дубликат Невозможно установить файл cookie PHP на той же странице