Formulaire Laravel 4 CSRF soumis par appel Ajax
Je suis nouveau à la fois Stackoverflow et Laravel 4,
Je suis en train d'essayer de soumettre un formulaire via ajax de jquery. Je serializeArray() la forme et l'utilisation de json pour le soumettre.
Dans laravel, dans les itinéraires-je vérifier le jeton csrf soumis, aller à mon contrôleur pour traiter les données.
Les csrf case ne fonctionne pas quand la _token d'entrée est dans un tableau comme avec serializeArray().
Je dois obtenir l'_token valeur et présenter est comme séparé de données ajax. Je me demandais si il existe un moyen de dire csrf filtre où jamais de ses cours afin de vérifier le tableau d'entrée dans le champ _token et l'utiliser?
voici mon code:
routes.php
Route::post('searchAjax', array('before' => 'csrf',
'uses' => 'SearchController@searchAjax'));
C'est là que je wan-il pas à lire le tableau de la forme[0]['_token], mais je ne sais pas comment le dire à le faire.
index.js
var form = $('#search').serializeArray();
var token = $('#search > input[name="_token"]').val();
$.ajax({
type: 'post',
url: 'searchAjax',
dataType: 'json',
data: { _token: token, form: form },
success: function(data) {
for(var key in data)
{
//alert(key)
}
//alert(data.message);
}
});
Je veux me débarrasser de { _token: jeton, forme: forme } dans l'appel ajax et ont juste la "forme" qui est un tableau avec _token dans déjà.
voici le code html:
<form id="search" class="form-horizontal" accept-charset="UTF-8" action="http://testing:998/search" method="POST">
<input type="hidden" value="6GBbv9LmnOdL8UcOsm8DDJ4Bfi6eGcQRlC9SPdL4" name="_token">
<div class="control-group">
<label class="control-label" for="title">Book Titles</label>
<div class="controls">
<input id="title" class="input" type="text" value="click to search book titles" name="title">
</div>
</div>
<div class="control-group">
<div class="control-group">
<div class="control-group">
</form>
Vous en remercie d'avance. 🙂
source d'informationauteur Saman
Vous devez vous connecter pour publier un commentaire.
Une autre option est d'utiliser l'approche décrite par Kelt Dockins qui consiste à envoyer le jeton dans les en-têtes à l'aide de jquery, par exemple. quelque part dans votre jquery/javascript de bootstrap ajouter:
Cela obtenir le jeton CSRF à partir d'un en-tête de données meta tag et l'inclure dans les en-têtes de chaque requête ajax. Ensuite, vous devez ajouter les métadonnées et un jeton dans votre Laravel modèles, par exemple.
Vous devez également modifier le CSRF filtre pour vérifier la requête ajax en-tête ainsi la valeur par défaut Input::get('_token')