web-dev-qa-db-fra.com

Mise en place de cookies pour Guzzle CookieJar

Je fais des tests unitaires dans PHP pour un site nécessitant une authentification. L'authentification est basée sur un cookie, je dois donc pouvoir placer un cookie comme celui-ci dans le pot de cookie:

[ 'user_token' => '2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae' ] 

L'application Web peut ensuite utiliser ce bon jeton connu pour les données de test et sera en mesure de s'authentifier dans des conditions de test pour interagir avec les appareils de données.

En outre, il doit s'agir d'un cookie sécurisé et je dois (évidemment) définir le domaine.

Le problème est: je ne sais pas comment faire et mettre ce cookie et le coller dans le pot. Comment tu fais ça?

7
DrDamnit

Le code source fourni la réponse dont j'avais besoin. 

La classe CookieJar fournit une méthode pour créer des cookies à partir d'un tableau associatif. Exemple:

$domain = 'example.org';
$values = ['users_token' => '2c26b46b68ffc68ff99b453c1d30113413422d706483bfa0f98a5e886266e7ae'];

$cookieJar = \GuzzleHttp\Cookie\CookieJar::fromArray($values, $domain);

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://example.org',
    'cookies'  => $cookieJar 
]);
10
DrDamnit

Exemple simple. ce code enregistre un cookie dans un fichier et le charge lors de la prochaine exécution du script

use GuzzleHttp\Client;
use GuzzleHttp\Cookie\FileCookieJar;

// file to store cookie data
$cookieFile = 'cookie_jar.txt';

$cookieJar = new FileCookieJar($cookieFile, TRUE);

$client = new Client([ 
  'base_uri' => 'http://example.com',
  // specify the cookie jar
  'cookies' => $cookieJar
]);

// guzzle/cookie.php, a page that returns cookies.
$response = $client->request('GET', 'simple-page.php');

les cookies de session ne sont pas stockés automatiquement. Pour stocker le php cookie de session, nous devons définir le deuxième paramètre sur TRUE.

$cookieJar = new FileCookieJar($cookieFile, TRUE);

Référence 

http://www.ryanwright.me/cookbook/guzzle/cookie

2
Abdullah Mallik