Laravel как прокси и обработка файлов cookie с помощью guzzle

Вот в чем дело: одно приложение AngularJS отправляет запрос на вход в мой API (Laravel). Затем Laravel делает запрос с помощью Guzzle к другому API. Этот API возвращает файл cookie, который Laravel отправит в AngularJS.

Теперь при последующих запросах, сделанных AngularJS, этот файл cookie отправляется, Laravel вставляет его при последующих запросах Guzzle.

Мой метод входа:

public function login(AuthRequest $request)
    {
        $credentials = $request->only('email', 'password');
        $response = $this->httpClient->post('_session', [
            'form_params' => [
                'name'     => $credentials['email'],
                'password' => $credentials['password']
            ]
        ]);

        return $this->respond($response->getHeader('Set-Cookie'));
    }

Как мне «синхронизировать» файл cookie Laravel и файл cookie Guzzle?

Я использую Laravel 5 и последнюю версию Guzzle (6.0.1).


person Fabio Antunes    schedule 18.06.2015    source источник
comment
Одна простая мысль (и я могу неправильно понять проблему) - сохранить файл cookie Guzzle в сеансе Laravel и получить его по мере необходимости.   -  person Kryten    schedule 18.06.2015
comment
Это то, что я пробовал, но, прочитав документы о файлах cookie в Guzzle, я не нашел способа установить файл cookie для каждого запроса. Это единственная информация о файлах cookie, которая содержится в документах Guzzle docs.guzzlephp.org/. ru/latest/quickstart.html#cookies   -  person Fabio Antunes    schedule 18.06.2015


Ответы (2)


Вы можете попробовать вручную добавить CookieJar, как указано в документации. Таким образом, файлы cookie вашего клиента будут использоваться в запросе.

$jar = new \GuzzleHttp\Cookie\CookieJar();
$client->request('GET', '/get', ['cookies' => $jar]);
person Sigismund    schedule 30.06.2016
comment
Правда, это то, что я в конце концов сделал, совершенно забыл ответить на свой вопрос. - person Fabio Antunes; 30.06.2016