Bonjour, je débute sur Symfony. J'ai vu que les tokens crsf sont gérés automatiquement sur un formulaire, mais pour faire ma requête DELETE, je dois le vérifier à la main. Ce que j'ai fait. Mais, quand je vérifie si le token est valide, j'ai toujours un false en retour.
Ici dans une liste d'administration d'éléments, je veux qu'ils aient chacun un bouton "Supprimer". Chacun a donc pour bouton le formulaire suivant :
1 2 3 4 5
| <form method="POST" action="{{ path('admin.property.delete', {id: property.id}) }}">
<input type="hidden" name="_method" value="DELETE">
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ property.id) }}">
<button>Supprimer</button>
</form> |
Dans mon controller :
1 2 3 4 5 6 7 8 9
| /**
* @Route("/admin/property/{id}", name="admin.property.delete", methods="DELETE")
*/
public function delete(Property $property, Request $request) : Response
{
if ($this->isCsrfTokenValid('detete' . $property->getId(), $request->get('_token'))) {
[...]
}
} |
Je ne rentre jamais dans le if. Si je dump ma condition :
dump($this->isCsrfTokenValid('detete' . $property->getId(), $request->get('_token'))); // false
j'ai un false en retour. Si je dump le token de la requête :
dump($request->get('_token')) // "zH8HtCRBvdHtlPhUiftWaNSkeKwR7jauHTNCjZq5ChY"
j'ai bien le token présent dans le champs hidden _token quand j'inspecte la page.
Bref, quelqu'un a t-il une idée de comment vérifier mon token pour que je puisse DELETE dans de bonnes pratiques ?
Merci
Partager