Bonjour,
Ayant activer le sécurity component dans mon controlleur je n'arrive plus à faire des requetes ajax avec angularjs car la console m'affiche bad request et le message '_Token' was not found in request data.
Dans mon controlleur ComptesControlleur j'ai ceci
public function initialize()
{
parent::initialize();
$this->loadComponent('Flash');
$this->loadComponent('RequestHandler');
$this->loadComponent('Security');
}
// et ceci dans l'action a executé
public function AfficheDetail()
{
debug($this->request->data);die();
}
dans mon App.js de angular, j'ai ceci:
$scope.DetailChoix = function(choix)
{
if(typeof parseInt(choix) === "number")
{
var link = path.substring(0 ,path.lastIndexOf( "/")) + '/AfficheDetail';
$http.post(link,{'choix':choix}).success(function(data){
if(data.valid == 0)
{
notification(300,"Mise à jour effectuée avec success","primary","Reception d'un Colis")
}
});
}
else
{
alert("Impossible de continuer");
}
}
dans ma vue, j'ai bien mon formulaire créer avec le formhelper comme ceci:
<?= $this->Form->create($compte,['type'=>'post','class'=>'form-horizontal form-bordered']) ?>
<div class="col-md-6">
<div class="form-group">
<label class="col-md-4 control-label"><?= __('Pack ') ?></label>
<div class="col-md-8 control-label">
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-credit-card"></i>
</span>
<?php echo $this->Form->input('pacquage_id',['options'=>$pack,'type'=>'select','label'=>false,'div'=>false,'class'=>'form-control ',"ng-model"=>"ngchoix","ng-change"=>"DetailChoix(ngchoix)"]) ?>
<?= $this->Form->unlockField('pacquage_id'); ?>
</div>
</div>
</div>
</div>
<?= $this->Form->end(); ?>
JE veux pouvoir sécuriser les informations que j'envoies par ajax vers mon controlleur Comptes
'_Token' was not found in request data.
Cake\Controller\Exception\AuthSecurityException
Tu peux regarder du coté du X-CSRF-Token.
Tu dois pouvoir modifier l'en-tête de ta requete HTTP en passant le token. Le token peut être généré par CakePHP de cette manière
<?php echo $this->request->getParam('_csrfToken'); ?>