Comment puis-je essayer d'envoyer une demande de publication à une application Laravel avec Postman?
Laravel a normalement un csrf_token
que nous devons transmettre avec une requête POST/PUT. Comment puis-je obtenir et envoyer cette valeur dans Postman? Est-ce même possible sans désactiver la protection CSRF?
Ah, attends, j'ai mal compris la question. Vous voulez le faire sans désactiver la protection CSRF? Comme Bharat Geleda l'a dit: Vous pouvez créer un itinéraire qui ne renvoie que le jeton et le copier manuellement dans un champ _token
dans Postman.
Mais je recommanderais d'exclure vos appels d'API de la protection CSRF comme indiqué ci-dessous et d'ajouter ultérieurement une sorte d'authentification d'API.
Quelle version de laravel utilisez-vous?
Depuis la version 5.2, le jeton CSRF n'est requis que sur les routes avec le middleware web
. Mettez donc vos routes api en dehors du groupe avec le middleware web
.
Voir la rubrique "Le fichier d’itinéraires par défaut" dans la documentation pour plus d’informations.
Vous pouvez exclure des routes qui ne devraient pas avoir de protection CSRF dans le middleware VerifyCsrfToken
comme ceci:
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'api/*',
];
}
Voir la rubrique "Exclusion d'URI de la protection CSRF" documentation pour plus d'informations.
Si vous stockez vos sessions dans des cookies, vous pouvez extraire le cookie d'une demande d'authentification dans les outils de développement.
Copiez et collez ce cookie dans l'en-tête de vos demandes POSTMAN ou Paw.
Cette approche vous permet de limiter les tests de votre API à votre session actuelle.
1.Vous pouvez créer un nouvel itinéraire pour afficher le jeton csrf à l'aide de votre contrôleur à l'aide de la fonction ci-dessous ..__ (Utilisez une requête Get sur l'itinéraire).
public function showToken {
echo csrf_token();
}
2.Sélectionnez l'onglet Corps sur postman, puis choisissez x-www-form-urlencoded.
3.Copiez le jeton et collez-le dans postman en tant que valeur de la clé nommée _token.
4.Exécutez votre demande de publication sur votre URL/Endpoint