SecurityComponent, AngularJs,

Par romses, il y a 8 ans


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.

Ce que je fais

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(); ?>

Ce que je veux

JE veux pouvoir sécuriser les informations que j'envoies par ajax vers mon controlleur Comptes

Ce que j'obtiens

'_Token' was not found in request data.
Cake\Controller\Exception\AuthSecurityException

1 réponse

kewek19, il y a 8 ans

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'); ?>