È comunque possibile effettuare chiamate ajax sicure utilizzando la meccanica di sicurezza modulo fornito di torta. Per fare ciò, eseguire il rendering di un modulo non visibile e posizionare gli input per memorizzare i parametri di chiamata ajax. Quindi, con Javascript imposta questi parametri nel tuo modulo e fai la chiamata ajax serializzandola. Ricorda che se hai abilitato il controllo CSRF (e un token-per-sessione è disabilitato) dovrai aggiornare il modulo con un nuovo token CSRF valido (puoi leggerlo nel controller con $this->request->params['_Token']['key']
).
Esempio:
<?php
echo $this->Form->create('AjaxForm');
echo $this->Form->hidden('value');
echo $this->Form->end();
?>
<script>
function makeAjaxCall() {
$.post(
ajaxUrl,
$('#AjaxForm').serialize(),
function(data) {
$('#AjaxForm [name="data[_Token][key]"]').val(data.newCsrfToken)
}
);
};
</script>
Per ulteriori riferimenti, abbiamo creato un componente che permette di mantenere la sicurezza abilitata su moduli lato client che vengono dinamicamente modificati, ed elimina la necessità di sbloccare i campi o le azioni quando si effettuano ajax chiamate. Puoi trovarlo allo https://github.com/QTSdev/DynamicSecurity.
Il componente (e la pagina Github) sono scomparsi. Hai un nuovo link? – schnauss